Cuando se produce una interrupción (ya sea por hardware o software), el procesador guarda automáticamente en la pila los siguientes registros:
1. IP (Instruction Pointer): Dirección de la siguiente instrucción.
2. CS (Code Segment): Segmento de código en ejecución.
3. Flags: Estado del procesador antes de la interrupción.
La instrucción IRET
revierte este proceso extrayendo estos valores de la pila, restaurando el contexto previo y reanudando la ejecución del programa.
IRET
No requiere operandos, ya que opera directamente sobre la pila.
section .text
global _start
_start:
; Simular una interrupción por software
int 0x80 ; Llamada al sistema en Linux
; Manejo de la interrupción
irq_handler:
; Aquí se ejecuta el código de la interrupción
mov eax, 1 ; Código de salida (sys_exit)
mov ebx, 0 ; Código de retorno
iret ; Retorna al programa llamante
1. Se genera una interrupción de software con int 0x80
(en Linux, para llamadas al sistema).
2. Se ejecuta el controlador de interrupciones irq_handler
.
3. La instrucción IRET
restaura el estado original del programa antes de la interrupción.
CS
, IP
y los registros de banderas.
Jorge García
Fullstack developer