documentation for LDP and STP给出一个结尾带有感叹号的示例指令:
LDP X8, X2, [X0, #0x10]!
还有 documentation about porting A32 PUSH/POP A64 中的说明给出了以下示例:
PUSH {r0-r1} ---> STP X0, X1, [SP, #-16]!
POP {r0-r1} ---> LDP X0, X1, [SP], #16
这两页都没有解释说明末尾的感叹号是什么意思。它有什么作用?
最佳答案
!
意思是“Register write-back”:基址寄存器用来计算传输的地址,已更新 .
在你的例子中:
LDP X8, X2, [X0, #0x10]!
X0
修改,以便在操作后:X0 = X0 + 0x10
如果不放
!
, X0
不会被操作修改。在关于 PUSH/POP 的第二个示例中,不同之处在于增量完成时:
STP X0, X1, [SP, #-16]!
店铺地址 SP-16
, 和 SP
以同样的方式递减LDP X0, X1, [SP], #16
从地址 SP
加载,并在转移完成后,存储SP+16
至 SP
.
关于assembly - A64指令末尾的感叹号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780289/