首页
社区
课程
招聘
[原创]【ARM】LDR STR指令的N种寻址姿势(上)
发表于: 2017-10-3 10:54 7820

[原创]【ARM】LDR STR指令的N种寻址姿势(上)

2017-10-3 10:54
7820

    指令集版本:arm v5te 32bit


    常见的LDR&STR指令分为两大类:

  (1)操作32bit字数据 或 8bit无符号字节数据的。

  (2)操作16bit半字数据 或  8bit有符号字节数据的。

    这里先只讲第一类,LDR LDRB这种。(LDR R0,[R1,#4]或LDRB R0,[R1,#4]

---------------------------------------------------------------------------------------------------------------------------




    1 指令格式:

    LDR {cond} {B} {T} <Rd>,{address_mode}

    LDR {条件码} {字/无符号字节} {是否有 ! } <目标寄存器>,{内存地址}


    2 指令的 address_mode由两部分组成

     基址  土  偏移

     (1)基址就是寄存器Rn

     (2)这个偏移则有多种形式,下面就单独拿出来说。

(直接是立即数、或者存在一个寄存器里、或者寄存器再配合一个移位操作计算出来的)


    3 地址偏移量分为三种形式

    (1)立即数

             LDR R0, [R1, #4]


    (2)寄存器

             LDR R0, [R1, R2]


    (3)寄存器及移位常数

             LDR R0, [R1, R2, LSL #2]


     BTW:地址偏移量形式相同的指令,其机器码数据结构也相同。


    4 最后,还要考虑个地址计算方法的事,分三种方法

    (1)偏移量方法

             LDR R0, [R1, #4]


    (2)事先更新方法(事先:先计算偏移,访问内存,最后更新基址寄存器)

             LDR R0, [R1, # 4] !


    (3)事后更新方法(事后:先访问内存,然后计算新基址寄存器)

             LDR R0, [R1], # 4

---------------------------------------------------------------------------------------------------------------------------



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 26398
活跃值: (63257)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
这位同学,过节还继续学习,并且与他人分享,以后必成大事!
2017-10-3 11:55
1
雪    币: 2141
活跃值: (7221)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
3
Editor 这位同学,过节还继续学习,并且与他人分享,以后必成大事![em_13]
  放假没别的事、闲不住
2017-10-3 12:26
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错!!!!!!
2017-10-6 20:24
0
雪    币: 11
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
干货啊,支持一下
2017-10-10 10:16
0
游客
登录 | 注册 方可回帖
返回
//