首页 > 代码库 > ARM LOAR-STORE指令
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 | 执行后增加 | Rn | Rn+4*N-4 | Rn+4*N |
IB | 执行前增加 | Rn+4 | Rn+4*N | Rn+4*N |
DA | 执行后减少 | Rn-4*N+4 | Rn | Rn-4*N |
DB | 执行前减少 | Rn-4*N | Rn-4 | Rn-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
ARM LOAR-STORE指令
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。