__stdcall
是 Windows 下一个能够被大多数语言支持的通用调用规范
__cdecl
是 MSVC 默认采用的函数调用规范(否则就会采用符号修饰)
这样不便于维护和使用,于是采用
.def
文件对导出符号重命名是一个很好的方案
参数传递从右向左压入栈,出栈由函数调用方完成:
- 将 m,n 入栈
- 将返回地址入栈
- 跳转
- 保存寄存器(包括 bp 等)
- 局部变量分配空间
- 其他变量分配空间
- 代码运行
- 回收局部变量空间
- 恢复寄存器值
- 从栈上的返回地址 ret
对于 32 位程序:
thiscall
专用于类成员函数的调用,this 指针放在 ecx 中