2011-03-13 120 views
14

有一个覆盖常规寄存器的similar post。 NEON注册呢?据我记得,要么在函数调用中保留寄存器的上半部分或下半部分。 我无法找到任何信息,有人可以澄清?ARM to C调用约定,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)不需要保留

回答

13

the AAPCS, §5.1.2.1

  • S16-S31(D8-D15,Q4-Q7)必须保留
  • S0-S15(D0-D7,Q0-Q3)D16-D31(Q8-Q15)不需要待保存
+1

arm64的约定可以在http://stackoverflow.com/a/29603040/224671找到。 – kennytm 2016-06-18 13:30:02