如何将浮点寄存器推送(和弹出)到 ARMv7 32 位上的堆栈?
How to push (and pop) floating-point registers to the stack on ARMv7 32-bit?
如何在现代 ARMv7 32 位上将一系列浮点寄存器压入(然后弹出)堆栈?特别是,我对保存然后恢复暂存(易失性)浮点寄存器 d0-d7(或 s0-s15,假设它们在处理器中占用相同 space)感兴趣。
我在 SFM
和 LFM
中看到了这种方法 http://www.cl.cam.ac.uk/~fms27/teaching/2001-02/arm-project/02-sort/apcs.txt,但它似乎只适用于非常老的 ARM 处理器,其中寄存器被命名为 f0-f7,并且它们是每个 96 位。寄存器和指令似乎都是 reworked/renamed 之后。
貌似在网上很难找到,不过最后好像就这么简单(来源http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Bcfchhif.html):
VPUSH {d0-d7} ; push d0, d1, ... , d7 to the stack
VPOP {d0-d7} ; pop d0, d1, ... , d7 from the stack
如何在现代 ARMv7 32 位上将一系列浮点寄存器压入(然后弹出)堆栈?特别是,我对保存然后恢复暂存(易失性)浮点寄存器 d0-d7(或 s0-s15,假设它们在处理器中占用相同 space)感兴趣。
我在 SFM
和 LFM
中看到了这种方法 http://www.cl.cam.ac.uk/~fms27/teaching/2001-02/arm-project/02-sort/apcs.txt,但它似乎只适用于非常老的 ARM 处理器,其中寄存器被命名为 f0-f7,并且它们是每个 96 位。寄存器和指令似乎都是 reworked/renamed 之后。
貌似在网上很难找到,不过最后好像就这么简单(来源http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Bcfchhif.html):
VPUSH {d0-d7} ; push d0, d1, ... , d7 to the stack
VPOP {d0-d7} ; pop d0, d1, ... , d7 from the stack