Interrupt Descriptor Table — Änderungen 6997 → 9365

Zeile 1: Zeile 1:
−
<b>IDT</b> steht für <b>I</b>nterrupt <b>D</b>escriptor <b>T</b>able. Sie wird im [[Protected Mode]] des x86 verwendet, um [[Interrupt]]s ihre [[ISR | Handler (ISRs)]] zuzuordnen. Die Einträge in der Tabelle heißen ''Interruptdeskriptoren''.
+
<b>IDT</b> steht für <b>I</b>nterrupt <b>D</b>escriptor <b>T</b>able. Sie wird im [[Protected Mode]] und im [[Long Mode]] des x86 verwendet, um [[Interrupt]]s ihre [[ISR | Handler (ISRs)]] zuzuordnen. Die Einträge in der Tabelle heißen ''Interruptdeskriptoren''.
  
 
== Aufbau ==
 
== Aufbau ==
 
Die IDT besteht aus einem Speicherbereich, in dem direkt aufeinanderfolgend die bis zu 256 Interruptdeskriptoren abgelegt sind (d.h. in Hochsprachen aus einem gepackten Array von 256 Deskriptoren). Für die Behandlung des Interrupt 0 wird der erste Eintrag der Tabelle benutzt, für Interrupt 1 der zweite usw.
 
Die IDT besteht aus einem Speicherbereich, in dem direkt aufeinanderfolgend die bis zu 256 Interruptdeskriptoren abgelegt sind (d.h. in Hochsprachen aus einem gepackten Array von 256 Deskriptoren). Für die Behandlung des Interrupt 0 wird der erste Eintrag der Tabelle benutzt, für Interrupt 1 der zweite usw.
  
−
=== Descriptor ===
+
Die Tabelle kann weniger als 256 Einträge haben. Wenn einer der Interrupts ausgelöst wird, die dadurch nicht von der IDT beschrieben sind und deren Interrupthandler folglich nicht aufgerufen werden kann, wird stattdessen ein #GP (General Protection Fault, siehe [[Exception]]) ausgelöst.
 +
 
 +
=== Deskriptor ===
 +
Ein Deskriptor in der IDT ist im Protected Mode 64 Bit und im Long Mode 128 Bit lang. Die in der Tabelle grau hinterlegten Einträge gelten nur für den Long Mode.
 +
 
 
{| {{Prettytable}}
 
{| {{Prettytable}}
 
! Bits  || Name  ||  Beschreibung
 
! Bits  || Name  ||  Beschreibung
Zeile 34: Zeile 38:
 
| style="background:lightgrey" | 64-95  
 
| style="background:lightgrey" | 64-95  
 
| style="background:lightgrey" | Offset 32-63  
 
| style="background:lightgrey" | Offset 32-63  
−
| style="background:lightgrey" | (Nur im LM, '''ansonsten nicht vorhanden'''!)
+
| style="background:lightgrey" | (Nur im Long Mode, '''im Protected Mode hat der Deskriptor nur 64 Bit'''!)
 
|-
 
|-
 
| style="background:lightgrey" | 96-127  
 
| style="background:lightgrey" | 96-127  
 
| style="background:lightgrey" | Reserviert (0)  
 
| style="background:lightgrey" | Reserviert (0)  
−
| style="background:lightgrey" | (Nur im LM, '''ansonsten nicht vorhanden'''!)
+
| style="background:lightgrey" | (Nur im Long Mode, '''im Protected Mode hat der Deskriptor nur 64 Bit'''!)
 
|}
 
|}