在 ARM64 汇编代码中,什么时候寄存器 31 XZR 与 SP?

Myr*_*ria 5 assembly machine-code cpu-registers instructions arm64

在ARM64汇编代码中,寄存器号31什么时候表示XZR,什么时候表示SP?

fuz*_*fuz 6

指令是否将寄存器 31 解释为零寄存器wzr/xzr或堆栈指针wsp/xsp取决于指令类型,并且不容易预测。相同的助记符可能指多个指令,其中一些接受堆栈指针作为操作数,而另一些则不接受。但是一般来说,所有与堆栈指针一起使用有意义的指令都有一种形式,它们可以与堆栈指针一起使用。汇编器会自动为您选择合适的形式。它永远不会默默地sp表示意思xzr,反之亦然。

在ARM参考手册中,XnWn用于指代寄存器,其中寄存器31指的是零寄存器。 Xn|SPWn|WSP用于指代寄存器,其中寄存器 31 指的是堆栈指针。详见§5“A64指令集”的介绍。