如何在32位ARMv7上将浮点寄存器推送(和弹出)到堆栈?

时间:2016-07-29 21:00:51

标签: assembly floating-point stack arm cpu-registers

如何在现代ARMv7 32位上将一系列浮点寄存器推送(然后弹出)到堆栈?特别是,我有兴趣保存然后恢复临时(易失性)浮点寄存器d0-d7(或s0-s15,假设它们在处理器中占用相同的空间)。

我在SFMLFM看到了这种方法http://www.cl.cam.ac.uk/~fms27/teaching/2001-02/arm-project/02-sort/apcs.txt,但它似乎只适用于非常老的ARM处理器,其中寄存器名为f0-f7,它们是96-每一点。在此之后,寄存器和指令似乎都被重新设计/重命名。

1 个答案:

答案 0 :(得分:4)

显然,在互联网上很难找到,但最终它似乎就像这样容易(来源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