Considere el siguiente segmento de programa en un procesador hipotético.
Tengo esta pregunta en mi curso CS201. Supongamos que este procesador tiene operaciones de carga/almacenamiento de 32 bits, las operaciones ALU son de 16 bits y las instrucciones de rama son de 16 bits. El programa se ha cargado en la memoria con una dirección de inicio de 3000 (que está en decimal).
Asumiendo el direccionamiento de bytes, si la interrupción ocurrió durante la ejecución de la instrucción de detención, entonces la dirección de retorno insertada en la pila será ?
Mi intento:
Remití este enlace
http://x86.renejeschke.de/html/file_module_x86_id_134.html
De acuerdo con este enlace, la dirección de retorno guardada en la pila debe ser de instrucción después de la instrucción HALT, lo que me da la dirección guardada como
3000 + 4 + 2 + 2 + 2 + 4 + 2 + 2 = 3018
Por lo tanto, Stack ahorra 3018 .
Pero no tengo la respuesta conmigo, así que no puedo confirmarla.
¿Voy bien?
La dirección de retorno guardada en la pila debe ser de instrucción después de la instrucción HALT
Por supuesto. De lo contrario, la CPU entraría nuevamente en una instrucción HALT después de regresar de la interrupción.
Supongamos que este procesador tiene operaciones de carga/almacenamiento de 32 bits, las operaciones ALU son de 16 bits y las instrucciones de rama son de 16 bits.
Falta algo de información: la información, que "HALT" es una instrucción "branch" en la CPU dada (en las CPU automotrices modernas, "HALT" es una clase de instrucción especial, no "branch") o la información de cuánto tiempo "HALT" es.
3000 + 4 + 2 + 2 + 2 + 4 + 2 + 2 = 3018
Suponiendo que "HALT" también tenga 16 bits: Sí, es correcto.
Anónimo
Granero
Claudio Avi Chami
bruce abbott