//在Delphi圣地中发的贴子,同时也转到这里来。
呵呵,说一下关于参数的传递问题.
在C,C++等语言中函数的参数的进栈顺序是从右向左进行,比如一个函数 int Func1(int x,y),所以其入栈方式就是:
Push Y
Push X
或者
mov (esp+4),Y //由于在调用函数之前会先把调用函数之后的指令地址地址入栈保存便于程序在执行完之后能够跳到正确的地方执行,入栈之后ESP减去4个字节所以,此时的栈顶指针应该增加4个字节
mov (esp), X//然后入栈参数X
然后是Call Func1,由此可见,需要使用存储器.
关于C中的我就介绍这样多吧,呵呵,也不晓得讲的对不对,都忘记完了.
那么在Delphi中参数的传递方式又如何呢?
在Delphi中,Delphi默认的参数传递方式是通过寄存器进行传递的.其中EAX,ECX,EDX三个寄存器用来传递参数.
参数1------> EAX
参数2------> EDX
参数3------> ECX
返回类型:
Char,Byte al 寄存器
SmallInt , Word ax 寄存器
Integer,LongWord,AnsiString,Pointer,class eax 寄存器
Real48 eax 寄存器中是栈内返回值的指针
Int64 edx:eax 寄存器对
Single,Double,Extended,Comp