2. Register laden uit geheugen

2.1. Documentconventies

Notatie: Rt, Rn duiden de ARM-registers R0-R7 aan, behalve waar anders aangegeven. immN stelt een immediate-waarde voor met een breedte van N bits, vandaar dat imm5 beperkt is tot het bereik 0-31. [Rn + immN] is de inhoud van het geheugenadres dat wordt verkregen door Rn en de offset immN op te tellen. Offsets worden gemeten in bytes. Deze instructies beïnvloeden de conditievlaggen.

2.2. Register laden

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] Laad een 32-bits woord

  • ldrb(Rt, [Rn, imm5]) Rt = [Rn + imm5] Laad een byte

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] Laad een 16-bits halfwoord

Waar een byte of halfwoord wordt geladen, wordt deze met nullen uitgebreid (zero-extended) tot 32 bits.

De opgegeven immediate-offsets worden gemeten in bytes. Vandaar dat in het geval van ldr de 7-bits waarde het mogelijk maakt om 32-bits woord-uitgelijnde waarden te benaderen met een maximale offset van 31 woorden. In het geval van ldrh maakt de 6-bits waarde het mogelijk om 16-bits halfwoord-uitgelijnde waarden te benaderen met een maximale offset van 31 halfwoorden.