如何解决解释arm64指令STP
我正在阅读源代码并找到下面的说明,但我不知道它的作用。 有人可以帮我理解吗?
stp x19,x20,[x8],#16
如果只有stp x19,[x8]
我能理解。
解决方法
它称为“后索引”变体,存储后会修改地址。
以下两个是等效的:
stp x19,x20,[x8],#16
stp x19,[x8]
add x8,x8,#16
还有一个预索引变体,修改了存储之前 的地址。
同样,这两个是等效的:
stp x19,[x8,#16]!
add x8,#16
stp x19,[x8]
根据我的经验,这最常用来推动和弹出堆栈框架,如下所示:
some_func:
stp x29,x30,[sp,#-0x10]!
// ...
ldp x29,[sp],#0x10
ret
大多数形式的单寄存器ldr
和str
也具有这些变体,有关更多信息,请参见ARMv8 Reference Manual中的C1.3.3节(“加载/存储寻址模式”)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。