Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: scales of justice am 16. June 2006, 15:32

Titel: Jump in den Pmode funzt nich
Beitrag von: scales of justice am 16. June 2006, 15:32
Ich hab mit Tee-Jays Tutorial probiert in den Pmode zu springen,
aber irgendwie funzts nich:

www.zeit-fuers-ich.de/pmode.txt


er kommt zwar in den Pmode, aber der Jump

db 0xea
dw pmode
dw 0x0008


springt daneben, deswegen kommt dann lock prefix unallowed
Bochs zeigt allerdings an, ich bin an 0x0008:0x00000067 (das ist die richtige Adresse)

das heißt eigentlich es muss etwas in der GDT falsch eingetragen sein,ich find den Fehler aber nicht
Titel: Jump in den Pmode funzt nich
Beitrag von: Jidder am 16. June 2006, 15:58
An welche Adresse wurde der Code geladen? Bist du sicher, dass cs = 0x1000?
Titel: Jump in den Pmode funzt nich
Beitrag von: scales of justice am 16. June 2006, 16:25
ja sollte, hat auch mit dem anderen Kernel im Rmode immer geklappt
hier mal der Bootloader code:

www.zeit-fuers-ich.de/boot.txt

aber der müsste eigentlich stimmen
Titel: Jump in den Pmode funzt nich
Beitrag von: Jidder am 16. June 2006, 16:41
Der Jump springt nicht daneben. Das Rumgefrickel in der GDT geht allerdings daneben. Warum weiss ich nicht. Such dir ein anderes Tutorial, irgendwie sind TeeJays Tutorials unausgereift.
Titel: Jump in den Pmode funzt nich
Beitrag von: scales of justice am 16. June 2006, 18:52
ich hab as ganze jetzt nochmal anhand eines anderen Tutorials gemacht
das ergebnis ist aber genau das Gleiche

hab das Ganze jetzt direkt als Bootloader gemacht:
www.zeit-fuers-ich.de/bootloader.txt

diesmal berechne ich das Zeug für die GDT auch nicht zur Laufzeit

EDIT:

hmm, darf vielleicht das org 0x7c00 nicht da oben hin, weil das dann auch für den 32 Bit code unten gelten würde?
wenn ja, wie bau ich den 16 Bit Teil dann so um, dass er auch ohne funktioniert?
Titel: Jump in den Pmode funzt nich
Beitrag von: Jidder am 16. June 2006, 18:55
es muss:
lgdt [gdt_desc]
heissen.

außerdem empfehle ich xor ax, ax statt mov ax, cs.

edit: das org 0x7c00 muss da hin und gerade, dass es für den pmode teil auch gilt, sorgt dafür, dass es funktioniert.
Titel: Jump in den Pmode funzt nich
Beitrag von: scales of justice am 16. June 2006, 19:10
ja stimmt das iwar falsch, das Ergebnis ist aber immernoch exakt das Gleiche
hab den neuen Code hochgeladen

ich installier mal die neue Version von Bochs, irgendwas stimmt da nicht...
Titel: Jump in den Pmode funzt nich
Beitrag von: Jidder am 16. June 2006, 19:14
lol, an bochs liegts nicht. du musst die interrupts im protected mode deaktivieren.