函数调用规范
| 调用约定 | 调用规则 |
|---|---|
| __cdecl | 函数参数从右往左依次入栈,由调用者平衡栈, C/C++默认的函数调⽤约定 |
| __stdcall | 函数参数从右往左依次入栈,在被调函数内部平衡栈 |
| __fastcall | 前几个参数通过寄存器传参,后面的参数从右往左依次入栈,在被调函数内部平衡栈 |
__fastcall采⽤寄存器传参,所以运⾏速度会更快;如果参数过多,会有⼀部分参数通过栈传递。
__fastcall调用规范
- Win32平台(x86)
前两个参数采⽤ECX、EDX传递,其余参数采⽤栈传递
- Win64平台(x64)
前4个参数采⽤RCX 、RDX 、R8、R9传递,其余参数采⽤栈传递 注:如果有this指针,则this指针通过RCX传递(作为第⼀个参数)
- 64位Linux平台(x64)
前6个参数采⽤RDI、RSI、RDX、RCX、R8、R9传递,其余参数采⽤栈传递