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