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