程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 初學Delphi嵌入匯編[4] - 寄存器在過程與函數中的使用

初學Delphi嵌入匯編[4] - 寄存器在過程與函數中的使用

編輯:Delphi

CPU 提供了諸多寄存器, 但在 Delphi 的過程和函數中, 只有 EAX ECX EDX 三個寄 存器可以自由使用;

如果改變了其他寄存器, 在過程和函數結束前要給恢復.

記得前面學習過 Delphi 的過程和函數默認的調用約定是 Register , 前三個參數通 過寄存器傳遞, 其他參數存與棧.

它所指的三個寄存器就應該是 EAX ECX EDX 了.

看資料介紹應該是: EAX 先接受第一個參數再接受返回值, ECX EDX 接受後面兩個參 數.

但我不能進行完整的測試.//測試三個自由寄存器: EAX ECX EDX
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}
{看來寄存器 ECX 儲存的是第三個參數; EDX 儲存第二個參數}
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved