Ejercicio 5

Re: Ejercicio 5

de Federico Rivero -
Número de respuestas: 0
Hola Bruno, contesto entrelíneas.

En el caso de una memoria direccionada de a byte, pero si la arquitectura es de por ejemplo 32 bits, al hacer reg1 = memoria[0x00], ¿en el registro 1 (el cual es de 32 bits) queda guardado el contenido de las direcciones 0x00, 0x01, 0x02 y 0x03?, de ser así, en que orden se guarda (supongo que este es un aspecto que varía dependiendo de la arquitectura), si no es así, ¿Qué se guardaría en el registro, solo el contenido de memoria[0x00] y el resto 0 por ejemplo?

En el caso de direccionamiento de a byte ocurre como decís, al realizar una lectura de 32 bits a la dirección 0 se leen los bytes 0x00, 0x01, 0x02, 0x03. La pregunta de cómo quedan guardados en el registro uno se determina según una propiedad de la arquitectura llamada endianness. Si la arquitectura es little endian (como x86), entonces el byte de la dirección más baja de memoria es el byte menos significativo, de este modo, el registro 1 quedaría como:  mem[0x03]  mem[0x02]  mem[0x01] mem[0x00] . Si la arquitectura es big endian, ocurre al revés.

En el caso de memorias direccionada de a palabra, supongo que podrá haber excepciones, pero ¿lo normal sería que el tamaño de la palabra coincida con el tamaño del bus de datos y los registros, cierto?

Correcto, eso es lo normal.

Por último, cuando se habla de arquitectura de n bits, lo que determina el n es el tamaño de los registros y el bus de datos, ¿el tamaño del bus de direcciones puede ser distinto al n? (pregunto porque usualmente cuando se habla de arquitectura de n bits también se suele mencionar que dicha arquitectura es capaz de direccionar x cantidad de memoria (usualmente con x = 2^n bytes, para el caso de memoria direccionada de a byte), pero creo recordar que 8086 maneja direcciones de 20 bits a pesar de ser una arquitectura de 16 bits, aunque no he llegado hasta allí en mi repaso quería aprovechar para preguntar).

Efectivamente el bus de direcciones puede ser diferente al N de la arquitectura y un ejempo es 8086 como decís vos. Otro ejemplo es cualquier procesador moderno que implemente la arquitectura x86-64. La arquitectura es de 64 bits, pero los buses de direcciones no llegan a eso y usualmente varían entre 32-48 bits.

Saludos,
        Federico