Pregunta

Tengo dos preguntas sobre Da modo de direccionamiento. Por ejemplo:

STMDA R0!, {R1-R7}

La dirección inicial será R0 - (7 * 4) + 4, es decir, R0-24, de acuerdo con el manual de referencia arquitectura ARM y end_address será R0.

Así que:

  1. ¿Se va a almacenar el valor de R1 a R0-24 o R0?
  2. Si R1 se almacena a R0-24, a continuación, almacena posteriores crecerá hacia la parte superior de la memoria (de R0-24 a R0)?
¿Fue útil?

Solución 3

parte del pseudocódigo se muestra a continuación:

address = start_address para i = 0 a 15 si register_list [i] == 1 entonces Memoria [dirección, 4] = Ri address = dirección + 4

parece que el método de crecimiento de STM no tiene nada que ver con el modo de direccionamiento para el almacenamiento de datos? siempre almacena los datos de dirección de menor a mayor, el modo de direccionamiento sólo se decide la dirección de inicio basada en R0?

Otros consejos

Cuando se utiliza ARM varios almacenes y cargas, regístrese valores siempre se cargan / almacenado en orden ascendente en la memoria. Por lo tanto, cuando se utiliza un almacén de múltiples descendente, los registros se escriben en la memoria hacia atrás. Su instrucción STMDA rompe de manera efectiva en los siguientes pasos:

  • Tienda R7 en R0
  • Tienda R6 en R0 - 4
  • Tienda R5 en R0 - 8
  • Tienda R4 en R0 - 12
  • Tienda R3 en R0 - 16
  • Tienda R2 en R0 - 20
  • Tienda R1 en R0 - 24
  • restar 28 de R0 (debido a reescritura - la !).

Por lo tanto, para responder a sus preguntas:

  1. El valor de R1 se almacenará en R0 - 24. (. En este caso, me refiero al valor de R0 antes de ejecutar la instrucción, no después Usted está utilizando reescritura - la ! -. Así que después de la instrucción, R0 habrá tenido 28 resta de ella)

  2. R1 se almacena en R0 - 24, pero como se explicó anteriormente, R1 es el último registro ha de tener el valor almacenado en la memoria. R7 se almacena primero, y almacena posteriores de allí crecen hacia abajo en la memoria.

Tengo que admitir que no sé de cualquier documentación que apoye esta respuesta. Además, se ha pasado un tiempo desde la última vez hice ningún tipo de codificación ARM. Sin embargo, definitivamente recuerdo preguntando cómo se almacenan en ARM registra en un almacén de múltiples descendente. Me di cuenta de esto escribiendo un programa corto de averiguar.

Búsqueda de brazo del brazo El manual de referencia de arquitectura ARM ...

La primera dirección formada es el, y es el valor del registro de base de menos de cuatro veces el número de registros especificados en, además de 4. direcciones posteriores están formados por incrementar la dirección anterior por cuatro. Una dirección se produce para cada registro que se especifica en.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top