2. Carregar registo da memória

2.1. Convenções do documento

Notação: Rt, Rn denotam registos ARM R0-R7, exceto onde indicado. immN representa um valor imediato com largura de N bits, portanto imm5 está restrito ao intervalo 0-31. [Rn + immN] é o conteúdo do endereço de memória obtido adicionando Rn e o deslocamento immN. Os deslocamentos são medidos em bytes. Estas instruções afetam os flags de condição.

2.2. Carregamento de registo

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] Carregar uma palavra de 32 bits

  • ldrb(Rt, [Rn, imm5]) Rt = [Rn + imm5] Carregar um byte

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] Carregar uma meia palavra de 16 bits

Quando um byte ou meia palavra é carregado, é estendido a zero para 32 bits.

Os deslocamentos imediatos especificados são medidos em bytes. Assim, no caso de ldr, o valor de 7 bits permite aceder a valores alinhados a palavras de 32 bits com um deslocamento máximo de 31 palavras. No caso de ldrh, o valor de 6 bits permite aceder a valores alinhados a meias palavras de 16 bits com um deslocamento máximo de 31 meias palavras.