2. 從記憶體載入暫存器

2.1. 文件慣例

標記法:除非另有說明,否則 Rt, Rn 表示 ARM 暫存器 R0-R7。immN 表示寬度為 N 位元的立即值,因此 imm5 被限制在 0-31 的範圍內。[Rn + immN] 是將 Rn 與偏移量 immN 相加所得記憶體位址的內容。偏移量以位元組為單位。這些指令會影響條件旗標。

2.2. 暫存器載入

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] 載入一個 32 位元字組(word)

  • ldrb(Rt, [Rn, imm5]) Rt = [Rn + imm5] 載入一個位元組

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] 載入一個 16 位元半字組(half word)

在載入位元組或半字組時,會將其零延伸(zero-extend)至 32 位元。

所指定的立即偏移量以位元組為單位。因此,就 ldr 而言,7 位元的值可讓 32 位元字組對齊的值以最大 31 個字組的偏移量被存取。就 ldrh 而言,6 位元的值可讓 16 位元半字組對齊的值以最大 31 個半字組的偏移量被存取。