调用规约
2019-01-02 本文已影响0人
玻璃缸里的自游
stdcall,cdecl,fastcall,thiscall,naked call
1、stdcall的调用约定意味着:1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。
2、cdecl调用约定是C语言缺省的调用约定。其参数压栈顺序是和stdcall是一样的,从右向左压入堆栈。不同的是,函数本身不清理堆栈,而由调用者负责清理堆栈。
3、VC++开发环境中,默认的编译选项是C语言缺省的_cdecl。如果要使用stdcall,必须显示声明。如:Win32的API函数都遵循_stdcall调用约定,可声明为WINAPI,这就是stdcall。
4、c++对象函数默认使用thiscall. this指针通常由寄存器ECX传递。