函数调用约定

119 阅读1分钟

函数调用约定

  • stdcall(pascal)-C++的标准调用方式

    • 参数从右向左压入堆栈
    • 函数自身清理堆栈
    • 函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
  • cdecl

    • 参数从右向左压入堆栈
    • 调用者负责清理堆栈
    • C调用约定允许函数的参数的个数是不固定的,这也是C语言的一大特色。
    • 仅在函数名前加上一个下划线前缀,格式为_functionname。
  • fastcall

    • 函数的第一个和第二个DWORD参数(或者尺寸更小的)通过ecx和edx传递,其他参数通过从右向左的顺序压栈
    • 函数自身清理堆栈
    • 函数名修改规则同stdcall:函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
  • thiscall-C++类成员函数缺省的调用约定

  • naked call