Welche CPU-Register sollen am Ende einer asm-Prozedur in Delphi wiederhergestellt werden?

Wenn Sie eine Delphi-Prozedur oder -Funktion in Assembler-Code schreiben, welche Register müssen gespeichert und am Ende der Prozedur auf den ursprünglichen Wert zurückgesetzt werden?

Wenn ich eine andere Delphi-Prozedur oder -Funktion aus (Inline-) Assembly-Code aufrufe, was kann ich von dieser anderen Funktion erwarten, die mit den Registern zu tun hat? Welche Register werden auf ihre ursprünglichen Werte zurückgesetzt und welche nicht?

(Offensichtlich würde die gleiche Antwort auf beide Fragen zutreffen)

Ich gehe davon aus, dass diedefault Aufruf Konvention von Delphi. Ich weiß dasEAX wird für 32-Bit-Rückgabewerte verwendet. Und wenn man sich den asm-Code in SysUtils.pas ansieht, scheint es, dassEBX, ESI undEDI werden gepusht und wiederhergestellt, die anderen nicht. Ich kann jedoch keine Dokumentation dazu finden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage