跳转至

调用约定

英文: Calling Convention.
别名: 调用方法, 调用规则.

调用约定 入栈顺序 清栈责任
cdecl 从右到左 调用者
stdcall 从右到左 被调用者
fastcall 从右到左(左边部分参数寄存器, 其他堆栈) 被调用者
thiscall 从右到左(this 寄存器) 被调用者
pascal 从左到右 被调用者

cdecl

为 C Declaration 的缩写, 是 C/C++ 的默认调用约定, 可变参数函数只能使用该调用约定.

stdcall

为 Standard Call 的缩写, Win API 只使用该调用约定和 vectorcall.

thiscall

是 C++ 非静态成员函数的默认调用约定.
通常, this 使用寄存器 cx 传递.

fastcall

部分参数利用寄存器传参, 以提高函数调用的效率.
通常, 左侧两个参数使用寄存器 dx, cx 传递.

pascal

是 Pascal/Delphi 所使用的调用约定.

评论