【发布时间】:2017-03-09 08:17:06
【问题描述】:
我在 AArch64 中找到了如何使用 STP/LDP 推送/弹出 64 位寄存器对的文档。我了解他们可以将 128 位 NEON 浮点寄存器的低 64 位作为参数,例如:
@ Push D0, D1
STP D0, D1, [SP, #-16]!
@ Pop D0, D1
LDP D0, D1, [SP], #16
但是,如何在 AArch64 中压入/弹出 NEON 浮点寄存器的完整 128 位?下面的工作吗? (我怀疑它不会减少/增加SP 寄存器)
STR Q0, [SP, #-16]!
LDR Q0, [SP], #16
【问题讨论】:
-
我不明白为什么它不会更新
SP。无论如何,如有疑问,请使用调试器:) -
当您尝试组装/运行它时发生了什么?你的指令集参考对此事有什么看法?
-
@Ross Ridge - stp q0, q1, [sp, #-(16*2)] 怎么样! ?
-
@Notlikethat,我还没有这样做,因为基础设施尚未设置。现在只是编码/设计。
-
您意识到 ABI 只要求您存储前 64 位,对吧?您是为了遵守调用约定而保存寄存器,还是因为您需要为自己的目的而保存它们?