C-Compiler für Kernel



  • Ich möchte im moment ein eigenes primitives OS schreiben, mein Problem:
    die verschiedenen assembler und die damit verbundenen Strukturierugnen der "Befehle".
    Nun dachte ich mir das C da wesentlich einheitlicher ist, noch mehr komfort bietet und auch die nötigen befehle z.b. mit inline assembler hat.
    Leider hab ich nur einen C++ compiler der mir eine ferige exe-datei mit windows-header... Deshalb dachte ich mir ich mir C würde auch reichen
    Kennt jemand nen guten C-Compiler mit gut gestalteter Oberfläche der auch inline assembler unterstützt?



  • Ich denke was du brauchst ist ein 16 Bit C++ Compiler, der Inline Assembler unterstützt.

    Wo du so was bekommst, kann ich dir net sagen, aber ich habe so einen ähnliche beitrag heute verfasst:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-159728.html



  • Du kannst dafür C und C++ Compiler benutzen. In der Dokumentation steht, wie du plain-binaries erzeugen kannst. Bei C++ musst du nur beachten, das einige Features eine Laufzeitumgebung benötigen.

    Der GCC ist bei der (Hobby) OS Programmierung sehr beliebt.

    @Faule Socke
    ne, OS schreibt man doch nicht in 16Bit. Die 80er sind vorbei 🙂



  • ...aber was is GCC und wie kann ich nun plain-binaries erstellen?



  • gcc.gnu.org , da findest du auch das Manual.



  • rüdiger schrieb:

    Du kannst dafür C und C++ Compiler benutzen. In der Dokumentation steht, wie du plain-binaries erzeugen kannst. Bei C++ musst du nur beachten, das einige Features eine Laufzeitumgebung benötigen.

    Der GCC ist bei der (Hobby) OS Programmierung sehr beliebt.

    @Faule Socke
    ne, OS schreibt man doch nicht in 16Bit. Die 80er sind vorbei 🙂

    Geil... und wie geht des mit Visual Studio 2005??(Habe leider die englische version)(Siehe dazu auch hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-159766.html



  • Also es kann sein das jemand meine Frage net verstanden hat:

    Wie kann man mit Visual Studio 2005 die binärdaten(plain-binarys) kopillieren?

    mfg,

    Faule Socke



  • rüdiger schrieb:

    Du kannst dafür C und C++ Compiler benutzen. In der Dokumentation steht, wie du plain-binaries erzeugen kannst.



  • wenn du ein beispiel für nen Kernel in c++ und das kompilieren als plain-binary brauchst, ist das hier vielleicht was für dich: http://www.self-written.de/download/details.php?id=8

    ist allerdings dort mit dem djgpp gemacht



  • rüdiger schrieb:

    rüdiger schrieb:

    Du kannst dafür C und C++ Compiler benutzen. In der Dokumentation steht, wie du plain-binaries erzeugen kannst.

    Und wo steht das in der Doku??

    Mein name steht mir gut... ich bin zu faul zum suchen!! bitte nicht aufregen.....

    mfg,

    Faule Socke



  • Faule Socke schrieb:

    Also es kann sein das jemand meine Frage net verstanden hat:

    Wie kann man mit Visual Studio 2005 die binärdaten(plain-binarys) kopillieren?

    Ich denke nicht, dass der Microsoft-Compiler plain binaries erzeugen kann, aber wenn du eine PE EXE erzeugst, die du mit /NODEFAULTLIB linkst und dafür sorgst, dass sonst keine Funktionen aus der Standardbibliothek aufgerufen werden wie Stack-Überprüfungen und dann dafür sorgst, dass eine Multiboot-Struktur am Anfang der ersten Section vorhanden ist, kannst du diese EXE-Datei mit GRUB booten. 😉



  • Ich habe das wie folgt gemacht:
    Ich habe mir erst alles mit dem nams, djgpp und ld eingerichtet -> ein kleines Batchfile geschrieben.
    Dieses starte ich jetzt in VS2005 in den Pre Build Events

    und schon ist das OS kompiliert.

    mein Problem. VS kompiliert danach nat. selbst nochmal bzw es kommt nicht weit, aber das nervt noch ein bissl.
    Wenn da vlt. jemand eine Idee hat wie ich das noch bequemer machen kann, wäre toll.

    Also was ich bräuchte wäre eine Option ds der VS Compiler nach dem ersten Fehler aufhört oder gar nciht erst anfängt zu compilieren, sprich das nach dem Pre Compile Event der compilevorgang abgebrochen wird. (Im moment macht er das nur wenn vorher ein Fehler war -> das ist aber keine Lösung 🙂

    mfg


Log in to reply