ARM为C调用约定,NEON寄存器保存 [英] ARM to C calling convention, NEON registers to save
问题描述
有一个<一个href=\"http://stackoverflow.com/questions/261419/arm-to-c-calling-convention-registers-to-save\">similar帖子覆盖常规寄存器。什么NEON寄存器。至于我记得无论是上半部分和寄存器的下半部分都必须在函数调用pserved $ P $。
我找不到任何地方的信息,可有人澄清?
There is a similar post that covers regular registers. What about NEON registers. As far as I remember either top half or bottom half of registers have to be preserved across function calls. I can't find that info anywhere, can somebody clarify that?
感谢
从<一个href=\"http://www.scribd.com/josephyen/d/6546078-ARM-Architecture-Procedure-Call-Standard#page=15\">the AAPCS,§5.1.1内核寄存器:
- R0-R3 的参数和寄存器; R0-R1 也是结果寄存器
- R4-R8 被调用函数保存的寄存器
- R9 可能是被叫保存登记或不(在AAPCS的一些变种它是一种特殊寄存器)
- R10-R11 被调用函数保存的寄存器
- R12-R15 的特殊寄存器
- r0-r3 are the argument and scratch registers; r0-r1 are also the result registers
- r4-r8 are callee-save registers
- r9 might be a callee-save register or not (on some variants of AAPCS it is a special register)
- r10-r11 are callee-save registers
- r12-r15 are special registers
从<一个href=\"http://www.scribd.com/josephyen/d/6546078-ARM-Architecture-Procedure-Call-Standard#page=17\">the AAPCS,§5.1.2.1VFP寄存器使用约定(VFP V2,V3和高级SIMD扩展):
- S16-S31(D8-D15,Q4-Q7)必须是preserved
- S0-S15(D0-D7,Q0-Q3)和 D16-D31(Q8-Q15)不必是preserved
- s16–s31 (d8–d15, q4–q7) must be preserved
- s0–s15 (d0–d7, q0–q3) and d16–d31 (q8–q15) do not need to be preserved
推荐答案
从的 AAPCS下,§5.1.2.1:
- S16-S31(D8-D15,Q4-Q7)必须是preserved
- S0-S15(D0-D7,Q0-Q3)和 D16-D31(Q8-Q15)不必是preserved
- s16–s31 (d8–d15, q4–q7) must be preserved
- s0–s15 (d0–d7, q0–q3) and d16–d31 (q8–q15) do not need to be preserved
这篇关于ARM为C调用约定,NEON寄存器保存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!