Skip to content

Latest commit

 

History

History
29 lines (26 loc) · 956 Bytes

call.rst

File metadata and controls

29 lines (26 loc) · 956 Bytes

调用机制

调用惯例

  • cdecl
    • 函数调用方出栈
    • 传参从右至左入栈
    • 名称修饰使用下划线+函数名
  • stdcall
    • 函数本身出栈
    • 传参从右至左入栈
    • 名称修饰下划线+函数名+@+函数字节数
  • fastcall
    • 函数本身出栈
    • 传参头两个DWORD类型或者占更少字节的参数放入寄存器,其他的从右到左压栈
    • 名称修饰@+函数名+@+参数的字节数
  • pascal
    • 函数本身出栈
    • 传参从左至右入栈
    • 名称修饰复杂
  • naked call
    • 在特殊场合使用,不保护寄存器
  • thiscall
    • C++ 的特殊调用管理,称为thiscall,用于类成员函数的调用,特点随编译器不同而不同
    • VC的thiscall this指针存放于ecx,参数从右至左压栈
    • gcc的thiscall 和cdecl一样,只是将this看做函数的第一个参数