Delphi内嵌汇编代码函数中,函数参数与相应的寄存器是如何对应的?请帮忙!(100分)

  • 主题发起人 Enlightenment
  • 开始时间
E

Enlightenment

Unregistered / Unconfirmed
GUEST, unregistred user!
譬如下面函数,若自己编写,如何确定MaxLen的值被传递给了EDX?

function Scanline(Source: Pointer
MaxLen: Cardinal;
Value: Cardinal): Cardinal
assembler;
asm
PUSH ECX
MOV ECX,EDX
MOV EDX,EDI
MOV EDI,EAX
POP EAX
REPE SCASB
MOV EAX,ECX
MOV EDI,EDX
end;

最好,是有详细的编译规则说明。
 
第一个参数 EAX
第二个 EDX
第三个 eCX
返回值 EAX
 
我不是想光就此例(我也看得出答案),我是要:又若更多参数,将会如何编译?编译这些参数时的规则是什么?

希望有标准规则予以明示!谢谢!

又如,入栈、出栈情况,标志位是否受影响,数据传递类型(不同函数,AX,AL是否会有不同情况)

 
Delphi IDE 中 Help->Delphi Help-> 在索引页中输入"Calling conventions" -> 单击
出来的帮助页面底部的 "Program Control" 链接 -> 单击出来的帮助页面中的 "Parameter
passing" 链接。
 
已经解决!多谢!
 
顶部