X86 - 64编程实战:从函数调用到数组操作
1. 函数调用约定示例
在编程中,函数调用约定是一个重要的概念。下面我们先来看一个计算圆锥表面积和体积的示例。在完成函数序言后,会访问局部变量 LocalVar1A 和 LocalVar1B 用于演示。接着初始化主处理循环使用的寄存器,不过很多初始化是多余的,主要是为了说明非易失通用寄存器和 XMM 寄存器的使用。之后使用 SSE2 双精度浮点运算来计算圆锥的表面积和体积。
处理循环完成后,使用一系列 movdqa 指令恢复非易失 XMM 寄存器。函数 Cc3_ 释放其局部栈空间,并恢复之前保存的非易失通用寄存器。示例程序 CallingConvention3 的结果如下:
| r/h | sa | vol |
| — | — | — |
| 1.00 1.00 | 7.584476 7.584476 | 1.047198 1.047198 |
| 1.00 2.00 | 10.166407 10.166407 | 2.094395 2.094395 |
| 2.00 3.00 | 35.220717 35.220717 | 12.566371 12.566371 |
| 2.00 4.00 | 40.665630 40.665630 | 16.755161 16.755161 |
| 3.00 5.00 | 83.229761 83.229761 | 47.123890 47.123890 |
| 3.00 10.00 |
超级会员免费看
订阅专栏 解锁全文
22万+

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



