当从(inline)汇编代码调用另一个Delphi程序或函数时,我可以期待其他功能与寄存器有关?哪些寄存器将被恢复到原来的值,哪些不可以?
(显然,同样的答案将适用于这两个问题)
我假设德尔福的default calling convention.我知道EAX用于32位返回值.看看SysUtils.pas中的asm代码,似乎EBX,ESI和EDI被推送和恢复,但其他的则不是.但是,我找不到任何文档.
EBX不能更改(除非在程序/功能结束之前还原),所以不能ESP,EBP,ESI或EDI ..(1)以前在这里找到的Delphi在线ASM的一个很好的介绍:http://www.delphi3000.com/articles/article_3766.asp