X86 - 64核心编程:从函数调用约定到矩阵运算
1. 函数调用约定示例
在编程中,函数调用约定是一个重要的概念,它规定了函数参数的传递方式、栈的清理方式等。下面我们通过几个示例来深入了解。
1.1 圆锥表面积和体积计算示例
在一个示例程序中,函数执行过程如下:
- 函数序言之后,仅为演示目的访问局部变量 LocalVar1A 和 LocalVar1B 。
- 初始化主处理循环使用的寄存器,不过很多初始化是多余的,主要是为了说明非易失通用寄存器和XMM寄存器的使用。
- 使用SSE2双精度浮点运算计算圆锥的表面积和体积。
- 处理循环完成后,使用一系列 movdqa 指令恢复非易失XMM寄存器。
- 函数 Cc3_ 释放其局部栈空间,并恢复之前保存的非易失通用寄存器。
以下是示例程序 CallingConvention3 的结果:
| r/h | 1.00 | 1.00 |
| — | — | — |
| sa | 7.584476 | 7.584476 |
| vol | 1.047198 | 1.047198 |
| r/h | 1.00 | 2.00 |
|---|---|---|
| sa | 10.16640 |
超级会员免费看
订阅专栏 解锁全文
38

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



