arm64 汇编学习之ldr/str类指令学习总结

arm 汇编之ldr/str类指令学习总结

最近跟着笨叔叔的奔跑吧第三季的学习视频重新学习了一下ARM64 ldr/str类指令的相关汇编操作,查阅arm64相关的参考手册,对照讲解把对应的汇编重新操作了一边,通过gdb跟踪查看数据的变化,收获还是挺大的,下面是我在学习ldr/str的相关总结,此总结仅仅是我学习的一些理解。

1,加载/存储指令的格式

(1), ldr Xd, <存储器地址>
ldr Xd, #immediate
ldr Xd, literal
ldr Xd, Rs
(2), strr Xd, <存储器地址>
str Xd, #immediate
str Xd, Xs

2,加载/存储指令的地址偏移模式

ldr xd, [Xs, #offset]
此汇编指令的含义为:讲Xs寄存器的值加上offset之后的值作为内存地址,讲该内存地址的数据取出,放入寄存器Xd中。

3,加载/存储指令的变基模式

变基模式分为前变基模式和后变基模式,两者的区别为:前变基模式先更新偏移地址,再访问内存;而后变基模式则是先去内存中的数据,再去更新偏移地址。
ldr Xd, [Xs, #immediate]! 前变基模式
ldr Xd, [Xs], #immediate 后变基模式

4,加载/存储指令的标签模式

在标签模式下,读取的是PC+offset地址便宜的内存里面的数据。
eg:
#define TEST 0x10
ldr Xd, TEST //该汇编指令是将pc+TEST的内存里面的数据放入Xd寄存器中。
ldr Xd, =TEST //该指令是将TEST标签的值存入Xd寄存器中

5,多字节的加载和储存指令ldp和stp指令

ldp和stp一条指令可以加载和存储16 Byte的数据,效率提高了一倍。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值