Delphi 호출 규칙

832 단어 Delphi
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 MethodChar,         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.

좋은 웹페이지 즐겨찾기