Какие регистры процессора должны быть восстановлены в конце процедуры asm в Delphi
При записи Delphi-процедуры или функции в ассемблерном коде, какие регистры должны быть сохранены и восстановлены до исходного значения в конце процедуры?
При вызове другой процедуры или функции Delphi из (встроенного) кода ассемблера, что я могу ожидать, что эта другая функция будет делать с регистрами? Какие регистры будут восстановлены до их первоначальных значений, а какие нет?
(Очевидно, один и тот же ответ будет применяться к обоим вопросам)
Я предполагаюсоглашение о вызовах по умолчанию Дельфи. я знаю этоEAX
используется для 32-битных возвращаемых значений. И, глядя на код asm в SysUtils.pas, кажется, чтоEBX
, ESI
а такжеEDI
выталкиваются и восстанавливаются, а другие нет. Я не могу найти никаких документов по этому поводу, хотя.