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)