Autor Thema: Register dump?  (Gelesen 4066 mal)

bsunisol

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« am: 28. May 2006, 18:45 »
hi leute,
ich bin dabei eine funktion zum laden von sektoren zu schreiben.
nur will ich jetzt ein register dump machen um zu wissen ob er auch die
richtigen werte übergeben kriegt, denn die rechnung vom lba -> chs
stimmen, sind mathematisch/logisch korreckt.

weis einer wie das geht? ohne immer bei jedem dump das register von
hand von bin nach dec/hex um zu rechnen? das passt dann alles nicht
mehr in den bootsektor.

danke im voraus
Uni_Sol

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 28. May 2006, 19:00 »
Hi

kannst du deinen Bootsektor nicht mit bochs debugen? Dort kannst du deinen Bootsektor setp by step durchsteppen und dir auch die registerwerte anschauen, genauso wie speicherinhalte.

gruss

bsunisol

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 28. May 2006, 19:21 »
kuhl und wie?

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 28. May 2006, 22:20 »
Hi

- bochs besorgen   http://bochs.sourceforge.net/cgi-bin/topper.pl?name=See+All+Releases&url=http://sourceforge.net/project/showfiles.phpqmrkgroup_ideq12580
- Diskettenimage erstellen
- Bochs im debug mode starten (bochsdbg.exe). es erscheint ein menue in dem du laufwerke, images, ... einstellen kanst dort unter 3 - 8 - 1 dein image eintragen. weiter im Menue Memory die richtigen pfade zum BIOS und zu VGA-BIOS eintragen (einfach das null/ weglassen). dann starten. es sollten 2 fenster aufgehen 1. für die debug konsole und eins für den Monitor des simulierten rechners.
-  die cpu wird direckt nach dem rechnerstart angehalten. der Instrucktionpointer steht also bei 0xFFFF0, und somit kurtz vor der ausführung des BIOS. in der debug konsole einen breakpoint auf 0x07c00 setzen. wie das getzt genau geht. im handbuch nachlesen glaub "lb 0x07c00" ( wir wollen ja nicht das komplette bios debuggen sondern nur unsern booter ;) )
-  in der debug Konsole dann "c" eingeben und Enter. entspricht run in einem normalen debuger. damit durchläuft bochs das bios, und hält die cpu an wenn die Adresse 0x7c00 ausgeführt werden soll.
-  in der Debugkonsole "s" eingeben und Enter. damit wird der nächste befehl  ausgeführt. 5 solange wiederholen bis du an der entsprechenden stelle bist die dich interessiert. sollten zwischendrinn int aufrufe drin sein, auf die adresse die nach dem int folgt einen Breakpoint setzen, da du mit s auch die int rotine des bios durchstepst.
- mit "info registers" kannst du dir dann den Status der Register anzeigen lassen. näheres ggf im handbuch nachlesen. Kapitel 8.11

Die Systemeinstellungen kannst du auch in einer datei speichern, und beim start über Parameter übergeben, damit sparst du dir das eintragen des images bei jedem neuen start von bochs.

gruss

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 30. May 2006, 19:39 »
Zitat
kuhl und wie?


vielleicht können wir dir da besser weiterhelfen, wenn du uns sagst, wo genau dein Problem ist

bsunisol

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 30. May 2006, 22:26 »

 

Einloggen