调用约定
调用约定
函数的调用约定就是函数调用时的一些规则:
1、函数参数的压栈顺序
2、由调用者还是被调用者把参数弹出(内平栈/外平栈)
3、产生函数修饰名的方法
_cdcel
是C和C++默认调用约定:
1、从右至左依此压栈
2、由调用者维护参数内存栈(外平栈)
3、修饰名格式是在原函数名前加一个下划线,如_function
_stdcall
C和C++标准调用方式,Win32 API中的函数一般是这种调用方式:
1、从右至左依此压栈
2、被调用者维护参数内存栈(内平栈)
3、修饰名格式是在原函数名前加一个下划线,原函数名后加一个@,如_function@
_fastcall
fastcall就是快速调用约定,通过寄存器传递参数,相比于去内存栈中读取参数,fastcall更快:
1、使用ECX和EDX寄存器传递前两个DWORD或者更小的参数,其他参数依此从右往左依此入栈
2、被调用者维护参数内存栈(内平栈)
3、修饰名格式是在原函数名前和后各加一个@,并且在后面跟函数参数的字节数,如@function@16
_thiscall
C++类成员函数缺省的调用约定,在C++中,由于类成员有一个th ...