Lowlevel
Lowlevel => OS-Design => Thema gestartet von: JG am 02. March 2006, 08:36
-
Hallo,
ich hab da mal eine Frage: Hat euer OS einen Compiler? Wenn ja, welche Programmiersprache?
Viele Grüße,
Johannes
-
Du meinst, ob wir neben dem OS auch noch einen eigenen Compiler geschrieben haben, mit dem sich das OS kompilieren lässt?
Also bei unserem OS (www.xerxys.org) bisher keinen. Geplant ist aber definitiv ein optimierender Java-Compiler und ein JIT-Compiler innerhalb der Virtual Machine.
-
Ne, ich meine einen Compiler, der auf eurem OS läuft ;)
-
Ne, ich meine einen Compiler, der auf eurem OS läuft ;)
Also ich arbeite zur Zeit an einem ASM-Compiler (ich weiß das man den Assembler nicht Compiler nennt). Dieser soll die TASM-Syntax haben, also auch mein Betriebssystem-Quellcode assemblieren können. Natürlich werde ich die DOS/Windows erweiterungen weglassen, da ich die nicht brauche. Aber mir gefällt die Syntax vom TASM am besten, deswegen habe ich den auch für die OS-Programmierung genommen. Also soll mein Compiler mit ein paar Enderungen im Quellcode, den TASM-Quellcode assemblieren können. So sieht dann ungefähr der unterschied aus:
TASM:
code name
assume cs:code,ds:code,es:code
start:
org 0
xor ah,ah
mov si,offset msg
int 60h
mov ah,04h
int 60h
msg db "Hallo Welt ;)",00h
code ends
end start
EASM: (mein Compiler)
xor ah,ah
mov si,offset msg
int 60h
mov ah,04h
int 60h
org und assume kann man auch einfügen, sollen aber nicht pflicht sein. Ich muss zugeben das ich aber noch nicht weit bin.
bitmaster
-
Also ich habe einen eigenen Compiler der mein OS Compiliert (und sich sebst auch) (siehe Thread "Eigener C++ Compiler"). Jedoch ist mein OS noch nicht soweit, dass man ihn dort benutzen könnte (oder überhaupt irgendwelche Programme)...
@bitmaster: Ich würde da von Assemblieren sprechen.
MM
-
Was ich mich frage: Ich will ja Programme für mein OS kompilieren (im moment natürlich noch nicht), aber dazu brauch ich einen Compiler. Aber für den Compiler brauch ich ja wieder einen Compiler :roll:
Wie habt ihr das gelöst?
-
du kannst mit dem normalen C/C++ Compiler von Linux/Windows auch Programme für dein OS compilieren. Du musst nur die ganzen std-libs des HostOS (Linux/Windows) rauslassen und stattdessen den Code gegen deine eigene speziell für dein OS erstellte std-lib linken.
-
Ja, aber mein OS soll keine .exe Dateien haben ;)
Sondern ein eigenes Dateiformat..
-
Schreib den Compiler in einer portablen Sprache, die er selber unterstützt. Dann kannst du ihn mit einem Windows/Linux/was-auch-immer Compiler kompilieren und die EXE danach benutzen, um ihn in dein Format zu kompilieren. Für ein eigenes EXE Format bräuchtest du eigentlich auch nur einen neuen Linker, was viel einfacher ist als ein ganzer Compiler.
-
Da ich für mein OS FASM benutze und FASM mit sich selbst assembliert werden kann, werde ich ihn wohl mit einigen änderungen auf meinem OS zum laufen bringen können. Vorausgesetzt das mein OS irgendwann in einen benutzbaren zustand kommt. ;)
MenuetOS wurde z.B. auch in FASM geschrieben und hat FASM auch auf dem System.
-
Ja, aber mein OS soll keine .exe Dateien haben ;)
Sondern ein eigenes Dateiformat..
Compilier es zu rohem Binärformat. Dieses lädtst du nach nem Bootloader-Prinzip und springst hin. Wenn du nen Rücksprug-I(n0terrupt hast, in dem Programm, kommst du auch wieder zurück zum Kernel und hättest nebenbei ein primitives Single-Tasking geschrieben. DOS arbeitet eigentlich nach dem selben Prinzip :wink: :lol: :D :) :shock:
-
Compilier es zu rohem Binärformat.
Nein, ein Compiler macht eine Objektdatei normalerweise. Das ist meilenweit von einer Binärdatei entfernt. Unter Linux wird da normalerweise *.o verwendet und das ist vom Format her ELF.
-
Ich glaub wenn ein OS einen eigenen Compiler/Assembler hat kann man es als 'freestanding' bezeichnen.
Jetzt aber mal eine dumme frage: wie/womit hat man den ersten assembler überhaupt assemblieren können ? Das ist irgendwie so eine frage wie 'was war zuerst da, das huhn oder das ei' :wink:
-
@ bluecode:
Tja und danach:
ld Dingsbums.o OUTPUT_FORMAT ("binary")
Oder so :wink: !
@ ST-225:
Die ersten Assembler waren die Programmierer selbst.
Ein befreundter Programmierer, der schon sehr lang in der Szene ist, hat mir das erzählt. Man schrieb zuerst den Assembler-Code auf und übertrug ihn dann per Opcode Tabelle innen Hexeditor und dieser wurde geschrieben, indem man nicht Hex-Code sondern Binärcode geschrieben hat. Dieser wurde dann in einem ROM-Brenner aufs ROM des Computers übertragen und in den Rechner eingebaut. Das war dann sozusagen das BIOS. Allerdings musste man den Code für Hardware und so alles selbst tippen. Und da Speichermedien sehr teuer waren, wiederholte sich der Vorgang bei jedem Start. Allerdings bbesassen die Geräte damals meistens statisches RAM wodurch man es meistens nur bei nem total Reset wiederholen musste. Ungefähr so wars in der grauen Vorzeit. Dagegen wirkt DOS toppmodern!
-
ld Dingsbums.o OUTPUT_FORMAT ("binary")
Jo, aber du hast von Compilern geredet :roll: Da ist schon ein Unterschied.
edit: Wobei, jetzt wo dein Post nochmal durchles macht es sogar fast Sinn :lol: Ich hab statt "Compilier" "Compiler" gelesen und dacht ok, komische Gramatik und dann auch noch falsch :lol: Evtl. sollte ich nicht gleich nach dem Aufstehen posten...
-
Oder so wie ichs mach: Gleich nachm aufstehen ca. 7 Liter schwarzen Kaffee bei 200°C trinken! :lol: :lol: :lol:
-
Himmel......Klemmte deine Maus oder woher kommen diese vielen Smilies?
-
Welche vielen Smilies?
-
Kaffee find ich nich so doll, ist ein Aufputschmittel und verfärbt die Zähne :?
-
Dann nimm halt Wasser. Die 200C° dürften reichen, oder? :? :?: :lol: :lol: :lol:
-
Kann sie jetzt auch nicht mehr entdecken. Frage mich ob das du oder der Hanni warst??????
-
Ich wars :oops: !
-
Ich wars :oops: !
Hehe, brav ;)
-
Kaffee find ich nich so doll, ist ein Aufputschmittel und verfärbt die Zähne :?
gar nicht *bah*