Me gustaría preguntar sobre el acceso a la memoria. Cuando ejecuto un comando load word
, ¿qué restricciones de memoria existen? ¿Cuál es el número más grande que puedo usar como desplazamiento o registro base?MIPS restricciones de memoria?
Los registros son de 32 bits y, por lo que sé, el "inmediato" es de 16 bits. Por lo tanto, estoy bastante seguro de que no puedo hacer algo como
array: .word 0:20000
~
la $s0, array
lw $s1, 15000($s0)
...
Así que si quiero acceder al 15000, puede ser que necesite la
algo más pequeño e ir de allí ¿verdad? Pero, ¿cuál es el valor más pequeño al que necesito acceder para estar bien y por qué?
Así que si me gustaría tener acceso a un valor con un desplazamiento mayor que 32.767, entonces se lo necesita a 'la' en 32767 y usar otra compensación? Porque en mi ejemplo uso un valor adecuado (la primera palabra de la matriz) pero en el caso digo que tengo que usar otra 'la' o hay otra forma? – Elias
Si desea acceder a un valor con un desplazamiento que no cabe en el campo de compensación inmediata, sí, tendrá que obtener ese desplazamiento en un registro y agregarlo a la dirección usted mismo. 'la' le dará la forma más óptima de obtener un valor arbitrario inmediato en un registro. Si está haciendo esto de forma aislada, simplemente use 'la' para el desplazamiento que desee, y' 0' en el campo de desplazamiento 'lw'. Si está accediendo a varias cosas que están cerca, realice la 'la' y la suma una vez, luego use las compensaciones inmediatas apropiadas para los accesos. – moonshadow