2011-03-13 75 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