Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - d4rken

Seiten: [1]
1
Lowlevel-Coding / Re:OS-Dev für Einsteiger
« am: 25. April 2011, 14:52 »
ok, danke an die freundliche hilfe von allen =D

muss ich mir merken das ein dword 4 byte groß ist =)
2
Lowlevel-Coding / Re:OS-Dev für Einsteiger
« am: 24. April 2011, 15:05 »
ok, dank eurer hilfe binc ich schon ein bisschen weiter gekommen (großese dankeschön)

ich hab mich bisschen gespielt:

also ich hab mithilfe von:
push 5

die zahl 5 auf den stack gepackt und dann die c funktion print_nr(int nr) aufgerufen. dies hat super geklappt. Allerdings nachdem ich das in dem beispielkernel gemacht habe, hat dieser eine "General Protection Fault" Exception geworfen.

Ich denke, das da schon einiges am stack war und ich ihn mit meinen 5 durcheinander gebracht habe.
Jetzt stellt sich für mich die frage, wie ich den ursprünglichen stack wiederherstellen kann (also den stack ohne die 12).
Aus dem Beispiel in dem oben gennanten Link hab ich herausgelesen, das ich das esp register (den stack pointer?) zurücksetzten muss. im beispiel wird das mit add esp, 3*4 gemacht.

Soweit ich weiß addiert man zum esp 3*4 also 12 hinzu, mir ist allerdings unklar wie das den Stackpointer zurücksetzt.

(Es kann natürlich auch sein das ich hier gerade kompletten blödsinn rede, entschuldige)
Ich danke für jede antwort =)

EDIT: offensichtlich bekomme ich die 5 mit add esp, 4 aus dem stack wieder "hinaus", es geht, aber mir ist leider noch nicht klar warum :/ (ich denke es wäre gut für mich sowas auch zu verstehen)
3
Lowlevel-Coding / Re:OS-Dev für Einsteiger
« am: 24. April 2011, 13:12 »
danke für die schnelle hilfe =)

Nebenfrage: is es möglich in assembla eine c methode aufzurufen und dieser auch parameter zu übergeben (und umgekehrt) ?
4
Lowlevel-Coding / OS-Dev für Einsteiger
« am: 24. April 2011, 11:38 »
Hi,

ich bin noch recht neu auf dem Gebiet der OS Programmierung. Deshalb, habe ich mich übder das "OS-Dev für Einsteiger" Tutorial gefreut. Es ist gut erklärt und verständlich (lob an den autor), allerdings dachte ich mir, zum besseren Verständnis hole ich mir den Code des TuTs (http://git.tyndur.org/?p=tutorial.git;a=summary). Ich wollte diesen Code testweiße kompilieren (was auch wunderbar geklapt hat), allerdings bekomme ich sofort nach dem Start (und der Ausgabe "Hello World!") eine Exception (14 - Page fault). Nach ein paar nachforschungen stellte es sich heraus, dass der Fehler auftritt wenn man einen neuen Task erstellt (init_task).

Leider komme ich nicht zu einer Lösung des Problems. Vielleicht weiß jemand geneueres darüber.

Mit freundlichen Grüßen,
d4rken
Seiten: [1]

Einloggen