2. Caricamento di un registro dalla memoria

2.1. Convenzioni del documento

Notazione: Rt, Rn indicano i registri ARM R0-R7, tranne dove indicato. immN rappresenta un valore immediato avente una larghezza di N bit, quindi imm5 è vincolato all’intervallo 0-31. [Rn + immN] è il contenuto dell’indirizzo di memoria ottenuto sommando Rn e l’offset immN. Gli offset sono misurati in byte. Queste istruzioni influenzano i flag di condizione.

2.2. Caricamento di registri

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] Carica una parola a 32 bit

  • ldrb(Rt, [Rn, imm5]) Rt = [Rn + imm5] Carica un byte

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] Carica una mezza parola a 16 bit

Quando viene caricato un byte o una mezza parola, esso viene esteso con zeri a 32 bit.

Gli offset immediati specificati sono misurati in byte. Quindi nel caso di ldr il valore a 7 bit consente di accedere a valori allineati alla parola a 32 bit con un offset massimo di 31 parole. Nel caso di ldrh il valore a 6 bit consente di accedere a valori allineati alla mezza parola a 16 bit con un offset massimo di 31 mezze parole.