ARM为C调用约定,NEON寄存器保存 [英] ARM to C calling convention, NEON registers to save

查看:506
本文介绍了ARM为C调用约定,NEON寄存器保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个<一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆