Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: sp am 20. February 2005, 16:33

Titel: CS ohne jmp aktualisieren
Beitrag von: sp am 20. February 2005, 16:33
Hallo

nach dem ich nun mit Grub boote, bin ich dabei GDT Verwaltungsfunktionen in C zu schreiben. Nun stehe ich aber vor einem Problem, wie kann ich das Codesegment neu "laden" lassen? Im Moment läuft es so, Grub läd meinen Kernel und ich lade meine GDT. Jetzt würde ja ein Jump ins neue Codesegment folgen, nur das ist in C wohl nicht so gut. Daher meine Frage, kann ich CS auch ohne Jump aktualiseren ?

Danke.

sp
Titel: CS ohne jmp aktualisieren
Beitrag von: Roshl am 20. February 2005, 16:42
Ein Neuladen von CS erfolgt nach vielen Befehlen/Ereignissen z.B.:
-Far Call
-Far Jump
-Int
-iret
Soetwas in der Art muss immer erfolgen, einfach ein Neuladen von CS geht nicht. Aber man kann ganz einfach sowas machen(in NASM):
jmp NEW_CS: $+7
...
In C geht sowas nicht, da musst du auf ASM zurückgreifen.
Titel: CS ohne jmp aktualisieren
Beitrag von: Another Stupid Coder am 20. February 2005, 16:50
Eventuell Inline-ASM...wenn du nicht extra eine Obj.-Datei dazulinken willst :D