Si se almacena algo en 0x1001 0000, lo siguiente se almacena en 0x1001 0004. Y si estoy en lo cierto, las piezas de memoria en una arquitectura de 32 bits son 32 bits cada una. Entonces, ¿0x1001 0002 apunta a la segunda mitad de los 32 bits?¿Por qué las direcciones de memoria se incrementan en 4 en MIPS?
Respuesta
En primer lugar, las direcciones de memoria en la arquitectura MIPS no se incrementan por 4. MIPS utiliza direccionamiento de byte, por lo que se puede hacer frente a cualquier byte de la memoria (véase, por ejemplo lb
y lbu
para leer un solo byte, lh
y lhu
leer una media palabra).
El hecho es que si lee palabras que tienen 32 bits de longitud (4 bytes, lw
), entonces dos palabras consecutivas estarán a 4 bytes de distancia una de la otra. En este caso, agregaría 4 a la dirección de la primera palabra para obtener la dirección de la siguiente palabra.
Además de esto, si lee palabras debe alinearlas en múltiplos de 4, de lo contrario obtendrá una excepción de alineación.
En su ejemplo, si la primera palabra se almacena en 0x10010000 entonces la palabra siguiente será en 0x10010004 y por supuesto la primera mitad/segunda mitad estaría en 0x1001000 y 0x1001002 (el orden dependerá de la endianness de la arquitectura)
Parece que ha respondido a esta usted mismo! 32 bits hacen 4 bytes, así que si estás p. empujando a una pila, donde todos los elementos se empujan como del mismo tamaño, cada siguiente elemento estará 4 bytes adelante (o antes) el próximo.
- 1. MIPS restricciones de memoria?
- 2. Prevención de ejecución de memoria MIPS
- 3. ¿Por qué apache mantiene desplazamientos en la memoria donde php-cli contiene direcciones de memoria virtual?
- 4. las funciones (procedimientos) en MIPS
- 5. ¿Por qué la memoria direccionable por byte y no la memoria de 4 bytes direccionables?
- 6. ¿Por qué las direcciones de función no son expresiones constantes?
- 7. ¿Por qué las operaciones de MIPS en números sin firmar dan resultados firmados?
- 8. 'alinear' instrucción en MIPS
- 9. Cuando resta direcciones de memoria, ¿por qué el resultado es más pequeño de lo que esperaba?
- 10. ¿Qué plataformas reales asignan los puertos de hardware a las direcciones de memoria?
- 11. "Direcciones virtuales relativas", en relación a qué?
- 12. Horquilla - ¿mismas direcciones de memoria?
- 13. Desactivar la aleatorización de las direcciones de memoria
- 14. Históricamente, ¿por qué los RFC sobre las direcciones de correo electrónico se hacían tan complicados?
- 15. ¿Por qué ",,," == Array (4) en Javascript?
- 16. En Ruby, ¿por qué nil.id devuelve 4?
- 17. ¿Por qué la memoria se divide en pila y montón?
- 18. ¿Por qué se utiliza la exclamación en las URL?
- 19. MIPS - confusión JAL: $ ra = PC + 4 o PC + 8?
- 20. Asamblea: se mueven entre dos direcciones de memoria
- 21. valor absoluto en MIPS
- 22. Recursividad en MIPS
- 23. Formato UUID: 8-4-4-4-12 - ¿Por qué?
- 24. Monitor de memoria en xCode 4 - iPhone
- 25. ¿Por qué las aplicaciones de Cocoa usan tanta memoria?
- 26. ¿Qué significa rt en el formato de instrucción MIPS?
- 27. ¿Cómo se almacenan las variables de bytes en la memoria?
- 28. MIPS palabra de carga sintaxis
- 29. IP todas las direcciones en una subred
- 30. Memoria del kernel (entradas de direcciones virtuales) en TLB?
Las direcciones de memoria se incrementan en * 4 *, no * 4 bits *. – Gabe