阅读量:0
函数调用约定(Function Calling Convention)是指在不同的编译器和操作系统中,函数调用时关于如何传递参数、如何返回结果值以及谁负责清理堆栈等事项的一套约定。这些约定确保了函数调用的一致性和可预测性。以下是对函数调用约定的对比:
调用约定 | 函数参数入栈顺序 | 平栈方式(在函数内部或外部) | 备注 |
---|---|---|---|
__cdecl | 从右往左 | 外平栈 | C语言默认调用约定 |
__stdcall | 从右往左 | 内平栈 | windows API默认调用约定 |
__thiscall | 从右往左 | 内平栈 | 一般用于C++中,用ECX传递this指针 |
__fastcall | 从右往左 | 内平栈 | X64通用调用约定,前两个参数被分别放在了ecx,edx寄存器中,其余参数依次入栈 |