ARM LOAR-STORE指令

变址模式数据基址寄存器示例
回写前变址mem[base+offset]基址寄存器加上偏移LDR r0,[r1,#4]!
前变址mem[base+offset]不变LDR r0,[r1,#4]
后变址mem[base]基址寄存器加上偏移LDR r0,[r1],#4

PRE

r0=0x00000000
r1=0x00009000
mem32[0x00009000]=0x01010101
mem32[0x00009004]=0x02020202

 

回写前变址:

LDR r0,[r1,#4]!

POST(1)

r0=0x02020202
r1=0x00009004

 

前变址:

    LDR r0,[r1,#4]

POST(2)

r0=0x02020202
r1=0x00009000

 

后变址:

    LDR r0,[r1],#4

POST(3)

    r0=0x01010101
    r1=0x00009004

 

寻址模式指令r0=r1+=
回写前变址

LDR r0,[r1,#4]!

LDR r0,[r1,r2]!

LDR r0,[r1,r2,LSR#4]!

mem32[r1+0x4]

mem32[r1+r2]

mem32[r1+(r2 LSR 0x4)]

0x4

r2

(r2 LSR 0x4)

前变址

LDR r0,[r1,#4] 

LDR r0,[r1,r2]

LDR r0,[r1,-r2,LSR#4]

mem32[r1+0x4]

mem32[r1+r2]

mem32[r1-(r2 LSR 0x4)]

0

0

0

后变址

LDR r0,[r1],#4

LDR r0,[r1],r2

LDR r0,[r1],r2,LSR#4

mem32[r1]

mem32[r1]

mem32[r1]

0x4

r2

(r2 LSR 0x4)

 

 

多寄存器:

<LDM|STM>{<cond>}<寻址模式>Rn{!},<Registers>{r^}
寻址模式描述起始地址结束地址Rn!
IA执行后增加RnRn+4*N-4Rn+4*N
IB执行前增加Rn+4Rn+4*NRn+4*N
DA执行后减少Rn-4*N+4RnRn-4*N
DB执行前减少Rn-4*NRn-4Rn-4*N
r0=0x00080010

    LDMIA=r0!,{r1-r3}
         0x00080020       0x00000000b
    ---->0x0008001C       0x00000000a  
         0x00080008       0x000000009---->r3
         0x00080004       0x000000008---->r2
r0  ---->0x00080010       0x000000007---->r1
         0x0008000C       0x000000006

    LDMIB=r0!,{r1-r3}
         0x00080020       0x00000000b
    ---->0x0008001C       0x00000000a---->r3  
         0x00080008       0x000000009---->r2
         0x00080004       0x000000008---->r1
r0  ---->0x00080010       0x000000007
         0x0008000C       0x000000006

    LDMDA=r0!,{r1-r3}
         0x00080020       0x000000005
    ---->0x0008001C       0x000000004---->r3  
         0x00080008       0x000000003---->r2
         0x00080004       0x000000002---->r1
r0  ---->0x00080010       0x000000001
         0x0008000C       0x000000000

 

转载于:https://www.cnblogs.com/YYPapa/p/6855745.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值