__stdcall 是 Windows 下一个能够被大多数语言支持的通用调用规范


__cdecl 是 MSVC 默认采用的函数调用规范(否则就会采用符号修饰)

这样不便于维护和使用,于是采用 .def 文件对导出符号重命名是一个很好的方案

参数传递从右向左压入栈,出栈由函数调用方完成:

  1. 将 m,n 入栈
  2. 将返回地址入栈
  3. 跳转
  4. 保存寄存器(包括 bp 等)
  5. 局部变量分配空间
  6. 其他变量分配空间
  7. 代码运行
  8. 回收局部变量空间
  9. 恢复寄存器值
  10. 从栈上的返回地址 ret

对于 32 位程序:

thiscall 专用于类成员函数的调用,this 指针放在 ecx 中