一. Load/Store 指令
1. 前变址
前变址指令是在读取或存储数据时,先根据基址寄存器(Rn)与偏移量(offset)计算出有效地址,再进行数据操作。相关指令及示例如下:
-
LDR R0, [R1, #4]
:从地址R1 + 4
处读取一个字(32 位)到R0
。假设R1 = 0x10000000
,指令执行后R0 = 0x88776655
,R1
的值保持为0x10000000
。 -
LDRB R2, [R1, #4]
:从地址R1 + 4
处读取一个字节(8 位)到R2
,高位补零扩展为 32 位。执行后R2 = 0x00000055
,R1
的值不变。 -
LDRH R3, [R1, #4]
:从地址R1 + 4
处读取一个半字(16 位)到R3
,高位补零扩展为 32 位。执行后R3 = 0x00006655
,R1
的值不变。 -
LDRSB R4, [R1, #7]
:从地址R1 + 7
处读取一个字节,执行符号扩展成 32 位后存入R4
。执行后R4 = 0xFFFFFFFF88
,R1
的值不变。
前变址指令详细说明如下:
指令 |
功能描述 |
---|---|
|
从地址 |
|
从地址 |
|
从地址 |
|
从地址 |