2.6.4.2.1 Syntax

op{type}{cond} Rt, [Rn {, #offset}] ; immediate offset
op{type}{cond} Rt, [Rn, #offset]! ; pre-indexed
op{type}{cond} Rt, [Rn], #offset ; post-indexed
opD{cond} Rt, Rt2, [Rn {, #offset}] ; immediate offset, two words
opD{cond} Rt, Rt2, [Rn, #offset]! ; pre-indexed, two words
opD{cond} Rt, Rt2, [Rn], #offset ; post-indexed, two words

where:

  • op is either LDR (load register) or STR (store register)
  • type is one of:
    • B: unsigned byte, zero extend to 32 bits on loads.
    • SB: signed byte, sign extend to 32 bits (LDR only).
    • H: unsigned halfword, zero extend to 32 bits on loads.
    • SH: signed halfword, sign extend to 32 bits (LDR only).
    • -: omit, for word.
  • cond is an optional condition code; see 2.6.3.7 Conditional Execution.
  • Rt is the register to load or store.
  • Rn is the register on which the memory address is based.
  • offset is an offset from Rn. If offset is omitted, the address is the contents of Rn.
  • Rt2 is the additional register to load or store for two-word operations.