有一个类似的帖子涵盖了常规寄存器。NEON 寄存器呢?据我记得,寄存器的上半部分或下半部分必须在函数调用中保留。我在任何地方都找不到该信息,有人可以澄清一下吗?
谢谢
- r0-r3是参数和暂存寄存器;r0-r1也是结果寄存器
- r4-r8是被调用者保存寄存器
- r9可能是被调用者保存寄存器,也可能不是(在 AAPCS 的某些变体中,它是一个特殊寄存器)
- r10-r11是被调用者保存寄存器
- r12-r15是特殊寄存器
从AAPCS,§5.1.2.1 VFP 寄存器使用约定(VFP v2、v3 和高级 SIMD 扩展):
- s16–s31 (d8–d15, q4–q7)必须保留
- s0–s15 (d0–d7, q0–q3)和d16–d31 (q8–q15)不需要保留