【发布时间】:2011-07-14 09:19:57
【问题描述】:
有一个 similar post 涵盖常规寄存器。 NEON 寄存器呢?据我记得,寄存器的上半部分或下半部分必须在函数调用中保留。 我在任何地方都找不到该信息,有人可以澄清一下吗?
谢谢
来自the AAPCS, §5.1.1 Core registers:
- r0-r3 是参数和暂存寄存器; r0-r1也是结果寄存器
- r4-r8 是被调用者保存寄存器
- r9 可能是被调用者保存寄存器,也可能不是(在 AAPCS 的某些变体中,它是一个特殊寄存器)
- r10-r11 是被调用者保存寄存器
- r12-r15 是特殊寄存器
来自the AAPCS, §5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension):
- s16–s31 (d8–d15, q4–q7) 必须保留
- s0–s15 (d0–d7, q0–q3) 和 d16–d31 (q8–q15) 不需要保留
【问题讨论】:
-
FPSCR 和 FPEXC 怎么样?
-
我什至不确定这些。例如
5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension)覆盖FPSCR,但不清楚您是否应该采取任何措施来保护它。