>> Technologie Électronique >  >> Audio pour la maison >> Amplificateurs et préamplis

Différence entre les Instructions RET et IRET du Microprocesseur 8086

Instructions de Retour dans le 8086 : RET vs. IRET

Les deux instructions restituent le contrôle depuis une procédure/interruption, mais diffèrent par la restauration du contexte.

RET (Retour de Sous-routine)

  • But : Retour depuis CALL (proche/loin).
  • Action : Dépile IP (proche) ou CS:IP (loin) depuis la pile.
  • Pile : L'appelant empile l'adresse de retour ; RET la dépile.
  • Drapeaux : Ne modifie PAS le registre des drapeaux.
  • Variantes : RET (proche), RET n (dépile n octets après retour), RETF (loin).

IRET (Retour d'Interruption)

  • But : Retour depuis gestionnaire d'interruption (INT matériel, INT logiciel, exception).
  • Action : Dépile IP, CS, FLAGS (dans cet ordre) depuis la pile.
  • Cadre de pile (empilé par CPU à l'interruption) :
    FLAGS CS IP 
    (Plus code d'erreur pour certaines exceptions.)
  • Restaure : État complet du processeur (segment, pointeur d'instruction, tous les drapeaux : IF, TF, CF, etc.).
  • Requis pour réactiver les interruptions (IF=1) si le gestionnaire les a désactivées.

Tableau Comparatif

CaractéristiqueRETIRET
Dépile IPOuiOui
Dépile CS (loin)Oui (RETF)Oui
Restaure FLAGSNonOui
Utilisé PourCALL (sous-routines)INT / Exception / NMI
Activation Interruptions (IF)InchangéRestauré depuis la pile
Vérification PrivilègesNonOui (si changement CPL)

Point Clé

IRET restaure FLAGS ; RET ne le fait pas. C'est critique car les gestionnaires d'interruption effacent souvent IF (désactivent les interruptions) et modifient d'autres drapeaux. IRET assure que le code interrompu reprend avec l'état exact des drapeaux. Utiliser RET dans une ISR laisserait IF=0, gelant le système.

Ajouts en Mode Protégé

  • IRET peut changer le niveau de privilège (retour mode utilisateur depuis noyau). Charge SS:ESP depuis la pile si changement DPL.
  • RET ne peut pas changer le CPL.
  • Interruptions par porte de tâche utilisent IRET pour changer de tâche (héritage).

En x86-64 moderne, SYSRET/SYSEXIT remplacent IRET pour retour syscall rapide, mais IRET reste pour interruptions/exceptions.

Amplificateurs et préamplis