¿Qué sucede si la interrupción ocurre durante la ejecución de la instrucción HALT?

1

Considere el siguiente segmento del programa en un procesador hipotético.

TengoestapreguntaenmicursoCS201.Supongamosqueesteprocesadortieneoperacionesdecarga/almacenamientode32bits,lasoperacionesdeALUsonde16bitsylainstruccióndebifurcaciónesde16bits.Elprogramasehacargadoenlamemoriaconunadireccióndeiniciode3000(queestáendecimal).

Suponiendoqueeldireccionamientodebytes,silainterrupciónocurriódurantelaejecucióndelainstruccióndedetención,entoncesladirecciónderetornoempujadaenlapilaserá?

Miintento:

Hereferidoesteenlace

enlace

Según este enlace, la dirección de retorno guardada en la pila debe ser de instrucción después de la instrucción HALT, que me da la dirección guardada como

3000 + 4 + 2 + 2 + 2 + 4 + 2 + 2 = 3018

Por lo tanto, Stack guarda 3018.

Pero, no tengo la respuesta conmigo, así que no puedo confirmarla.

¿Voy bien?

    
pregunta Garner

1 respuesta

1
  

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 en una instrucción HALT nuevamente 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 la instrucción de rama es de 16 bits.

Falta información: la información de que "HALT" es una instrucción de "rama" en la CPU dada (en las CPU de automoción modernas "HALT" es una clase de instrucción especial, no de "rama") o la información sobre cuánto tiempo "HALT" es.

  

3000 + 4 + 2 + 2 + 2 + 4 + 2 + 2 = 3018

Suponiendo que "HALT" también tiene 16 bits de longitud: Sí, es correcto.

    
respondido por el Martin Rosenau

Lea otras preguntas en las etiquetas