函数调用约定
-
stdcall(pascal)-C++的标准调用方式
- 参数从右向左压入堆栈
- 函数自身清理堆栈
- 函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
-
cdecl
- 参数从右向左压入堆栈
- 调用者负责清理堆栈
- C调用约定允许函数的参数的个数是不固定的,这也是C语言的一大特色。
- 仅在函数名前加上一个下划线前缀,格式为_functionname。
-
fastcall
- 函数的第一个和第二个DWORD参数(或者尺寸更小的)通过ecx和edx传递,其他参数通过从右向左的顺序压栈
- 函数自身清理堆栈
- 函数名修改规则同stdcall:函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
-
thiscall-C++类成员函数缺省的调用约定
-
naked call