基于及地址的寻址模式
基地址
LDR Xt, [Xn]
加载Xn寄存器所指向的地址的数据到Xt寄存器
STR Xt, [Xn]
把Xt寄存器中的内容存储到Xn寄存器所指向的地址中
基地址加偏移量
LDR Xt, [Xn offset]
STR Xt, [Xn offset]
offset为地址偏移量
基地址扩展模式
LDR Xt, [Xn, Xm {, <extend> {<amount>}}]
STR Xt, [Xn, Xm {, <extend> {<amount>}}]
有点小麻烦,之后补充
变基地址模式
有两种,加载或存储前变基地址,和加载或存储后变基地址
前变基
LDR Xt [xn | sp, #<simm>]
STR Xt [xn | sp, #<simm>]
后变基
LDR Xt [xn | sp], #<simm>
STR Xt [xn | sp], #<simm>]
示例
LDR X0, [X1, #8] !
LDR X0, [X1], #8]
相对地址模式
汇编代码里通常使用标签(label)来标记代码段,LDR还提供一种访问标签的地址模式
LDR <Xt>, <label>
示例
label:
.word 0x40
ldr x0, label
x0寄存器的值为0x40
LDR伪指令
当第二个参数前有“=”,表示伪指令,没有则是普通的内存访问指令。
压栈和出栈命令
STP
LDP