什么是寄存器传递与栈传递,两者用在什么地方,怎么个用法

解决方案 »

  1.   

    两种不同的传递方式
    寄存器传递,直接使用寄存器,速度快
    另一个就是需要先push(压栈),最后pop(出栈)
      

  2.   

    前者类似于mov eax,1,因为Delphi的register call,参数在3个以内, 将分别使用eax、edx和ecx。
    后者类似于push 1
    pop
      

  3.   

    当函数的调用方式是Register时就是用寄存器传参(参数传递方向是从左到右),在32位下用到的寄存器是EAX,EDX,ECX,寄存器的存取速度本身就快。但是即使使用这种方式当参数多于3个时,剩下的参数就放到栈里传递。
    当函数的调用方式是stdcall、cdecl时(参数传递方向是从右到左),函数参数是放到栈中的,由于栈是内存的一部分其速度当然没有寄存器快,栈有一种特性就是后进先出,先进后出。