Autor Thema: initialisieren der IDT  (Gelesen 3528 mal)

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« am: 05. May 2004, 19:27 »
Wollt ma kurz mein Code vorstellen um die idt im PMode zu erstellen der Vorteil
ist das man die idt wenn sie einmal initialisiert ist stückweise bestücken kann ohne das es bei nem Interrupt oder ner Exception nen total Absturz gibt




_idttable:
    times    256*8     db    0
_idt:
IDTLimit        dw     0
IDTBase        dd    0


initirq:
    mov    ecx, 256
    mov    edi, _idttable
    cld    
initirq2:
    mov    eax, ignoreint
    stosw    
    xor    eax, eax
    mov    eax, 1000b                       ; Vorrausgesetzt der Code für den Handler steht im ersten Segment

    stosw
    xor    eax,eax
    stosb
    xor    eax,eax
    mov    eax, 0x8e
    stosb
    mov    eax, ignoreint
    shr    eax, 16
    stosw
    loop initirq2    
   
    mov   [IDTLimit], word 256*8-1
    mov    eax, 0x10000
    add    eax, _idttable
    mov    [IDTBase], eax
    lidt    [_idt]

ignoreint:
    iret
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

clemensoft

  • Beiträge: 92
    • Profil anzeigen
    • http://www.clemensoft.de
Gespeichert
« Antwort #1 am: 31. January 2005, 12:44 »
Danke lobmann!

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 31. January 2005, 17:33 »
Da:
xor eax, eax
mov eax, 1000b
Und da:
xor eax,eax
mov eax, 0x8e
Kann man das xor auch weglassen, erst null setzten und dann mit Werten füllen ist sinnlos.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 31. January 2005, 18:57 »
Mann könnte aber auch schreiben:

xor eax,eax
mov al, 0x8E
 \:D/

oder:

mov  eax,0xE0000008
rol eax,4
 :lol:


oder:

push dword 0xE8
pop eax


.... viele Wege führen nach Rom (...bzw. nach eax), aber

mov eax, 0x8e

ist natürlich am einfachsten!
 ](*,)
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

 

Einloggen