2. Cargar registro desde memoria

2.1. Convenciones del documento

Notación: Rt, Rn denotan los registros ARM R0-R7 excepto donde se indique. immN representa un valor inmediato con un ancho de N bits, de modo que imm5 está restringido al rango 0-31. [Rn + immN] es el contenido de la dirección de memoria obtenida al sumar Rn y el desplazamiento immN. Los desplazamientos se miden en bytes. Estas instrucciones afectan a las banderas de condición.

2.2. Carga de registro

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] Carga una palabra de 32 bits

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

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] Carga una media palabra de 16 bits

Cuando se carga un byte o una media palabra, se extiende con ceros a 32 bits.

Los desplazamientos inmediatos especificados se miden en bytes. Por lo tanto, en el caso de ldr, el valor de 7 bits permite acceder a valores alineados a palabra de 32 bits con un desplazamiento máximo de 31 palabras. En el caso de ldrh, el valor de 6 bits permite acceder a valores alineados a media palabra de 16 bits con un desplazamiento máximo de 31 medias palabras.