Una confusión en una instrucción de ensamblaje ARM

0

Mi pregunta sobre un código de instrucciones simple de un microcontrolador ARM.

LDR R2, [R1]

En la instrucción anterior, lo interpreto como: R1 un registro de memoria RAM y R2 es un registro de procesador. Lo que entiendo de esto fue que R1 representa el contenido de la memoria en RAM y R2 es un registro de procesador. Así que dice: Vaya a la dirección de R1 en la memoria RAM y cargue su contenido en el registro R2 del procesador. ¿Está bien? ¿R1 está en RAM pero R2 está en procesador?

    
pregunta user16307

1 respuesta

5

Tu redacción es rara, por lo que no puedo decidir si tienes la interpretación correcta o la incorrecta.

Físicamente, todos los registros ARM están en la CPU. Tienen valores (32 bit). En la instrucción que pregunta sobre el valor en R1 se utiliza como una dirección de memoria. El valor de esa dirección en la memoria (y las siguientes 3 direcciones, porque la memoria está direccionada en bytes y el LDR carga 32 bits) se carga en el registro R2.

Esta es la hoja de mi curso de ensamblador ARM que ilustra esta instrucción. Está parcialmente en holandés y cubre el caso más general en el que se aplica un desplazamiento al valor R1.

El bloque verde a la izquierda es la CPU con sus registros, el bloque amarillo adjunto es el microcontrolador, que contiene tanto la CPU como la memoria (RAM).

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas