Interrupt Descriptor Table

Aus Lowlevel
Version vom 20. Dezember 2007, 19:29 Uhr von Jgraef (Diskussion | Beiträge) (Die Seite wurde neu angelegt: <b>IDT</b> steht für <b>I</b>interrupt <b>D</b>escriptor <b>T</b>able. Sie wird verwendet um Interrupts ISRs zuzuordnen. Die Einträge heißen Interrupt Gates == ...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation,

IDT steht für Iinterrupt Descriptor Table. Sie wird verwendet um Interrupts ISRs zuzuordnen. Die Einträge heißen Interrupt Gates

Aufbau

Die IDT kann maximal 256 Interruptgates beinhalten, da es nur 256 Interrupts gibt. Ein Interruptgate in der IDT ist 8 Byte groß und sieht folgendermaßen aus:

63-48 47 46-45 44 43 42-40 39-32 31-24 16-0
Offset 31-16 Present DPL 0 D Type (110b) 0 Selektor Offset 0-15

Offset

Gibt das Offset des ISR innerhalb des Segments an.

Present

Gibt an ob dieser Eintrag benutzt wird.

DPL

Gibt das Descriptor Privilege Level an, das man brauch um diesen Interrupt aufrufen zu dürfen.

D

Gibt an ob es sich um ein 32bit (1b) oder um ein 16bit (0b) Segment handelt.

Type

Sollte bei einem Interruptgate immer 110b sein.

Selektor

Gibt den Selektor an.

Laden einer IDT

Zum Laden einer IDT muss die Instruktion lidt <p> mit der Adresse eines Selektors geladen werden. Dieser Selektor sind folgendermaßen aus:

47-32 31-0
Größer der IDT Adresse der IDT