很奇怪啊,很多教科书上说是从左向右。今天我测试了下,居然是从右向左了
Borland公司什么时候改了?还是我自己弄错了吗

解决方案 »

  1.   

    delphi缺省就是用寄存器传递参数的。
      

  2.   

    必须得,没什么好奇怪的,stdcall是标准调用方式,它和register相反
      

  3.   

    stdcall是微软设定的一种调用方式,API都采用这种方式进行调用,而Register call是Borland自己设计的一种调用方式,使用寄存器从右向左传参
      

  4.   

    stdcall:
    procedure Proc(v1, v2, v3, v4); stdcall;
    push  v4
    push  v3
    push  v2
    push  v1
    call  Proccdecl:
    procedure Proc(v1, v2, v3, v4); stdcall;
    push  v4
    push  v3
    push  v2
    push  v1
    call  Proc
    add   esp, 16pascal:
    procedure Proc(v1, v2, v3, v4); stdcall;
    push  v1
    push  v2
    push  v3
    push  v4
    call  Proc__fastcall(即register):
    procedure Proc(v1, v2, v3, v4); stdcall;
    push  v4
    mov   ecx, v3
    mov   edx, v2
    mov   eax, v1
    call  Proc