zoukankan      html  css  js  c++  java
  • 初学 Delphi 嵌入汇编[4] 寄存器在过程与函数中的使用

    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;
    
  • 相关阅读:
    软件工程个人作业01
    阅读计划及浅读问题
    引言作业1
    多态和异常分析课后
    大道至简七八章阅读
    接口与继承 课后实践
    构建执法阅读笔记02
    冲刺第五天
    学习进度条七
    冲刺第四天
  • 原文地址:https://www.cnblogs.com/del/p/1051302.html
Copyright © 2011-2022 走看看