为什么混合编程?
- 性能热点:关键函数用汇编优化
- 硬件操作:端口访问、特权指令
- 学习价值:查看 C 代码的汇编实现
C 调用汇编
汇编文件(add.asm)
|
|
C 文件(main.c)
|
|
编译链接
|
|
汇编调用 C 库
|
|
参数传递约定(32 位)
- 参数从右到左压栈
CALL后栈布局:1 2 3[ESP] = 返回地址 [ESP+4] = 参数 1 [ESP+8] = 参数 2- 返回值放在
EAX - 调用者负责清理栈
64 位差异
| 32 位 | 64 位 |
|---|---|
| 栈传参 | RCX/RDX/R8/R9 寄存器传参 |
| 调用者清栈 | 调用者清栈(影子空间 32 字节) |
| EAX 返回值 | RAX 返回值 |
总结
混合编程让汇编融入现代开发流。掌握链接约定,你就能在需要时引入汇编优化。
下一篇:《10 个经典汇编程序实例:从排序到字符串处理》