IRET - návrat z přerušení: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „;Instrukce : IRET - návrat z přerušení ;Časování : 17-169 (80286), 22-275 (80386) ;Popis : V reálném adresním módu instrukce IRET vyzvedáva ze zásobn...“)
 
 
Řádek 8: Řádek 8:
 
: V reálném  adresním módu instrukce [[IRET]] vyzvedáva ze zásobníku [[IP]] ([[EIP]]), [[CS]] a [[FLAGS]] a  ukončuje kód programu přerušení. V PM instrukce [[IRET]] závisí na nastavení  příznaku [[NT]] (Nested Task flag):
 
: V reálném  adresním módu instrukce [[IRET]] vyzvedáva ze zásobníku [[IP]] ([[EIP]]), [[CS]] a [[FLAGS]] a  ukončuje kód programu přerušení. V PM instrukce [[IRET]] závisí na nastavení  příznaku [[NT]] (Nested Task flag):
  
* [[NT]]  =  1.  Instrukce "obrací" efekt [[CALL]] nebo [[INT]], které vyvolaly přepnutí  úloh. Kód provádejíci  instrukci [[IRET]]  má  svůj  stav uchován  ve svém registru stavu ulohy  (TS). Znamená  to, že při opetovné aktivaci úlohy bude provedena jako první instrukce nasledujíci instrukcí [[IRET]].
+
:* [[NT]]  =  1.  Instrukce "obrací" efekt [[CALL]] nebo [[INT]], které vyvolaly přepnutí  úloh. Kód provádejíci  instrukci [[IRET]]  má  svůj  stav uchován  ve svém registru stavu ulohy  (TS). Znamená  to, že při opetovné aktivaci úlohy bude provedena jako první instrukce nasledujíci instrukcí [[IRET]].
  
* [[NT]] = 0.  Instrukce [[IRET]]  vrací  řízení z přerušovacího podprogramu, aniž se vyskytlo přepnutí úloh. Privilegovaná úroveň kódu, do nehož se řízení z přerušovacího  podprogramu navrací,  musí být  stejná  nebo menší než privilegovaná úroveň přerušovacího podprogramu.
+
:* [[NT]] = 0.  Instrukce [[IRET]]  vrací  řízení z přerušovacího podprogramu, aniž se vyskytlo přepnutí úloh. Privilegovaná úroveň kódu, do nehož se řízení z přerušovacího  podprogramu navrací,  musí být  stejná  nebo menší než privilegovaná úroveň přerušovacího podprogramu.
  
  

Aktuální verze z 9. 11. 2012, 23:34

Instrukce
IRET - návrat z přerušení
Časování
17-169 (80286), 22-275 (80386)
Popis
V reálném adresním módu instrukce IRET vyzvedáva ze zásobníku IP (EIP), CS a FLAGS a ukončuje kód programu přerušení. V PM instrukce IRET závisí na nastavení příznaku NT (Nested Task flag):
  • NT = 1. Instrukce "obrací" efekt CALL nebo INT, které vyvolaly přepnutí úloh. Kód provádejíci instrukci IRET má svůj stav uchován ve svém registru stavu ulohy (TS). Znamená to, že při opetovné aktivaci úlohy bude provedena jako první instrukce nasledujíci instrukcí IRET.
  • NT = 0. Instrukce IRET vrací řízení z přerušovacího podprogramu, aniž se vyskytlo přepnutí úloh. Privilegovaná úroveň kódu, do nehož se řízení z přerušovacího podprogramu navrací, musí být stejná nebo menší než privilegovaná úroveň přerušovacího podprogramu.


Syntaxe
IRET (žádné operandy)


Ovlivňuje příznaky
Celý registr příznaku je vyzvednut ze zásobníku.


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Múže být generována všeobecná výjimka porušení ochrany paměti, výjimka "deskriptor nenalezen", výjimka "chyba zásobniku".


Výjimky v reálnem módu
Je generováno přerušení INT 13 při vyzvedávaní obsahu zásobníku majíciho offset 0FFFFH.


Poznámka pro 80386
Je použit 32-bitový rozšírený ukazatel instrukce. Úroveň INTER ukláda 48-bitový ESP. Jsou ukládaný 48-bitový EIP a 32-bitový FLAG.


Příklad
IRET