3
« am: 26. April 2012, 20:16 »
Liebe Mitglieder des Lowlevel-forums,
ich lerne seit kurzer Zeit Assembler - ein paar Monate - und bin, weil ich nicht wusste was ich machen soll, um ein "bisschen" zu üben, auf die Idee gekommen ein eigenes OS zu schreiben - ich bin nicht größenwahnsinnig, ich weiß, dass es am Ende nicht zu gebrauchen sein wird, ich will nur meinen Computer verstehen -, um mir meine Zeit zu vertreiben. Zudem "spreche" ich ein bisschen C. Wie schon gesagt bin ich erst seit kurzem zum OS Programmieren gekommen, also habt Mitleid, wenn das was ich schreibe so falsch ist, dass es schon physisch weh tut. Soviel zu mir.
Also meine Frage zum Floppy:
Ich habe den Realmode verlassen und will nun "Sachen" aus meinem Floppydrive (Bootdrive) laden. Irgendwie muss ich dem Ding doch mitteilen, welcher Sektor geladen werden soll und wohin. Das geht warscheinlich mit IN und OUT. Aber welchen Port muss ich ansprechen (Ich hab das nirgendwo gefunden oder bin vielleicht einfach zu doof). Ich wäre dankbar für ein kommentiertes Beispiel. Ich will das so gut wie möglich verstehen.
Meine Fragen zum Protected Mode:
1. Wenn ich einen C code schreibe oder Assemblercode, dann gib es da ja Sektionen .text, .data, ... Wenn ich den Code im PM mode ausführen will muss ich ja darauf achten, dass z.B. die Sektion .data im Bereich eines Deskriptors liegen, der das Lesen erlaubt. Ich weiß nicht wie das schöne Betriebssysteme (LINUX) machen aber ich glaube, sich überlappende "Daten-" und "Codesektion" sind nicht die sauberste Lösung (aber die einzige Möglichkeit die mir momentan einfällt). Die Binärdatei liegt als eine große Datei vor. Wie sorge ich also dafür, dass mein Code in einer "Codesektion" und meine Daten in einer "Datensektion" liegen.
2. Ich darf die GDT während des PM verändern, oder?
PS: Wäre nett, wenn ihr bei der Registrierung einen Link zu den Nutzungsbedingungen einfügen könntet. Gibt es überhaupt welche?