Autor Thema: Jump in den Pmode funzt nich  (Gelesen 5286 mal)

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 16. June 2006, 15:58 »
An welche Adresse wurde der Code geladen? Bist du sicher, dass cs = 0x1000?
Dieser Text wird unter jedem Beitrag angezeigt.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #2 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 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.
Dieser Text wird unter jedem Beitrag angezeigt.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #4 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?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 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.
Dieser Text wird unter jedem Beitrag angezeigt.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #6 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...

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 16. June 2006, 19:14 »
lol, an bochs liegts nicht. du musst die interrupts im protected mode deaktivieren.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen