首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 內嵌組合語言:可自由使用的三個寄存器

     編輯:Delphi

EAX、ECX、EDX:過程/函數中可自由修改的寄存器

Delphi 過程與函數中,僅 EAX、ECX、EDX 三個寄存器可自由使用。修改其他寄存器(EBX、ESI、EDI、EBP、ESP 等)必須在退出前恢復原值,否則會破壞調用約定導致程序崩潰。

參數傳遞映射驗證

procedure Proc(x, y, z: Integer);
var a, b: Integer;
begin
  asm
    MOV a, ECX
    MOV b, EDX
  end;
  ShowMessage(Format('%d,%d', [a, b]));
  {EAX 無法直接測試,因其兼作返回值}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Proc(11, 22, 33);  {顯示: 33,22}
end;

映射規律總結

參數順序寄存器說明
第 1 參數EAX函數中兼作返回值
第 2 參數EDX—
第 3 參數ECX—
第 4+ 參數堆棧通過堆棧傳遞

注意: 此規則僅適用於默認 register 調用約定。使用 stdcall、cdecl 等約定時參數全走堆棧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved