Delphi调用约定

时间:2022-12-25 08:05:47

Register Calling Convention

Ojbect Pascal的默认调用约定为register,寄存器调用约定会将前三个参数依次放入eax,edx,ecx,返回值是eax(根据类型不同有差别).

function Add3Int(i,j,k:integer): integer;
//i,j,k依次放入eax,edx,ecx
asm
add eax,edx
add eax,ecx
end; procedure TForm1.btnTestPureAsmClick(Sender: TObject);
begin
ShowMessageFmt('i=%d',[Add3Int(1,2,3)]); //结果为6
end;

How Values Are Returned from Delphi Functions.

Return Type     Return Method
Char,         Byte al register.
SmallInt,      Word ax register.
Integer, LongWord, AnsiString,  Pointer, class     eax register.
Real48         eax contains a pointer to data on the stack.
Int64         edx:eax register pair.
Single, Double, Extended, Comp       ST(0) on 8087’s register stack.