函数调用约定,决定在函数调用过程中参数的传递方式、栈平衡由调用者还是被调用者执行、返回值如何传递。
三种比较基本的函数调用约定:
- cdelc (C调用约定)
- stdcall (标准调用约定)
- fastcall (快速调用约定)
cdelc
参数通过堆栈传递,参数从右至左依次入栈;
由调用者负责执行栈平衡;
返回值一般存放于eax中;
备注:cdelc是C语言默认的函数调用约定;函数名前面加下划线_;
stdcall
参数通过堆栈传递,参数从右至左依次入栈;
由被调用者负责执行栈平衡(ret n指令),意味着更好的兼容性;
返回值一般存放于eax中;
备注:C函数前加关键字stdcall使函数调用约定变更;WINAPI 是 _stdcall的别称,意味着所有的Windows API函数都是stdcall调用约定;函数名前加下划线,函数名后加@。
fastcall
通过寄存器传参,速度更快。
前两个(最左边两个)参数通过ecx、edx传参,其他通过堆栈传参;
由被调用者负责执行

本文详细介绍了四种函数调用约定:cdelc, stdcall, fastcall 和 thiscall。cdelc是C语言默认约定,参数从右至左入栈,调用者清理栈。stdcall常用于Windows API,由被调用者清理栈。fastcall通过寄存器传参,提高速度。thiscall是类函数的调用约定,this指针通过ecx传递。"
129709424,10912945,Python OneVsRestClassifier与随机森林构建多分类模型及ROC曲线分析,"['机器学习', 'python', '数据挖掘', '随机森林']
最低0.47元/天 解锁文章
5580

被折叠的 条评论
为什么被折叠?



