2018/10/03-函数调用约定、cdecl、stdcall、fastcall- 《恶意代码分析实战》

  cdecl是最常用的约定之一,参数是从右到左按序被压入栈,当函数完成时由调用者清理栈,并且将返回值保存在EAX中。

  stdcall约定是被调用函数负责清理栈,其他和cdecl非常类似。

  fastcall调用约定跨编译器时变化最多,但是它总体上在所有情况下的工作方式都是相似的。在fastcall中,前一些参数(典型的是前两个)被传到寄存器中,备用的寄存器是EDX和ECX(微软fastcall约定)。如果需要的话,剩下的参数再以从右到左的次序被加载到栈上。通常使用fastcall比其他约定更高效,因为代码不需要涉及过多的栈操作。

猜你喜欢

转载自www.cnblogs.com/Fingerprint/p/9900019.html