Qué registros de la CPU deben restaurarse al final de un procedimiento asm en Delphi

Al escribir un procedimiento o función de Delphi en el código de ensamblaje, ¿qué registros deben guardarse y restaurarse al valor original al final del procedimiento?

Al llamar a otro procedimiento o función Delphi desde el código de ensamblaje (en línea), ¿qué puedo esperar que esa otra función haga con los registros? ¿Qué registros se restaurarán a sus valores originales y cuáles no?

(Obviamente, la misma respuesta se aplicaría a ambas preguntas)

Estoy asumiendo elconvención de llamada predeterminada de Delphi Yo sé esoEAX se usa para valores de retorno de 32 bits. Y mirando el código asm en SysUtils.pas, parece queEBX, ESI yEDI son empujados y restaurados, pero los otros no. Sin embargo, no puedo encontrar ninguna documentación sobre esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta