【问题标题】:ARM to C calling convention, NEON registers to saveARM 到 C 调用约定,NEON 寄存器保存
【发布时间】:2011-07-14 09:19:57
【问题描述】:

有一个 similar post 涵盖常规寄存器。 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) 不需要保留

【问题讨论】:

  • FPSCR 和 FPEXC 怎么样?
  • 我什至不确定这些。例如5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension) 覆盖FPSCR,但不清楚您是否应该采取任何措施来保护它。

标签: arm neon abi


【解决方案1】:

来自the AAPCS, §5.1.2.1

  • s16–s31 (d8–d15, q4–q7) 必须保留
  • s0–s15 (d0–d7, q0–q3)d16–d31 (q8–q15) 不需要保留

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多