2. Carregar registrador a partir da memória¶
2.1. Convenções do documento¶
Notação: Rt, Rn denotam os registradores ARM R0-R7, exceto onde indicado. immN representa um valor imediato com largura de N bits, portanto imm5 é restrito ao intervalo 0-31. [Rn + immN] é o conteúdo do endereço de memória obtido pela soma de Rn com o offset immN. Os offsets são medidos em bytes. Estas instruções afetam os flags de condição.
2.2. Carga de registrador¶
ldr(Rt, [Rn, imm7])
Rt = [Rn + imm7]Carrega uma palavra de 32 bitsldrb(Rt, [Rn, imm5])
Rt = [Rn + imm5]Carrega um byteldrh(Rt, [Rn, imm6])
Rt = [Rn + imm6]Carrega uma meia palavra de 16 bits
Quando um byte ou meia palavra é carregado, ele é estendido com zeros para 32 bits.
Os offsets imediatos especificados são medidos em bytes. Assim, no caso de ldr, o valor de 7 bits permite acessar valores alinhados em palavra de 32 bits com um offset máximo de 31 palavras. No caso de ldrh, o valor de 6 bits permite acessar valores alinhados em meia palavra de 16 bits com um offset máximo de 31 meias palavras.