ARM32 指令集内存操作全解析
1. 加载寄存器概述
在 ARM32 指令集中,LDR 指令及其变体用于将地址加载到寄存器,或者加载该地址所指向的数据。它还支持内存索引操作,能充分利用 32 位指令的特性。主要涵盖以下几种情况:
- PC 相对寻址
- 从内存加载数据
- 内存索引操作
2. PC 相对寻址
PC 相对寻址是一种方便的寻址方式,它不需要额外的寄存器。在早期的“Hello World!”示例中,使用 LDR 指令加载字符串地址时就用到了这种方式。例如:
LDR R1, =helloworld
汇编后变为:
LDR r1, [pc, #20]
汇编器根据程序计数器(PC)的值,提供一个偏移量来获取正确的内存地址。偏移量在指令中有 12 位,范围是 0 - 4095,还有一位表示偏移方向,所以实际偏移范围是 ±4095。这里加载的是一个字,地址范围就是 ±4095 个字。
LDR 指令的一般形式为:
LDR{type} Rt, =label
其中,type 可以是以下几种数据类型,具体如下表所示:
| Type | Meaning |
| ---- | ---- |
| B | 无符号字节 |
| SB | 有符号字节 |
超级会员免费看
订阅专栏 解锁全文
3296

被折叠的 条评论
为什么被折叠?



