# OS-Compiler



## Kyoko (30. September 2004)

Hi,
ich wololote frage ob es einen Compiler zur Betriebssystem-'rogrammierung gibt? Ich hab mal was von so nem Teil gehört.
Danke im vorraus für eure Antwort.


----------



## domae (30. September 2004)

Was meinst du mit OS-Compiler?!

Man compiliert Quelltext von Programmiersprachen und das gibt dann das OS, nicht umgekehrt..

Also wenn du einer für Assembler brauchst: 
Netwide Assembler: NASM

Für C / C++: GCC

Wenn du unter Windows arbeitest:
http://www.domae.ch -> Downloads dort kannst du dir ein Developper-Packet downloaden.


mfg


----------



## Kyoko (1. Oktober 2004)

Damit meine ich einen Compiler mit dem man leicht eine OS schreiben kann, weil er nur Systerm-Unabhängige Befehle hat.


----------



## DarthShader (2. Oktober 2004)

Ein Compiler hat keine "Befehle", so wie Du es jetzt meinst. Wenn Du ein OS schreiben willst, nimmst Du z.B. eine Kombination aus C und ASM, mit nicht all zu vielem Aufwand kannst Du Dir ein eigenes kleines Programm bauen, welches den Rechner starten kann (im weitesten Sinne ein OS  ).

Der Compiler übersetzt den Programmcode in Maschinensprache - Systemunabhängige Befehle wie gesagt mit ASM, aber auch ein wenig C Code wird dabei sehr helfen. Wie schon mein Vorredner meinte, GCC ist ein guter C (++) Compiler.

Wenn Du einfach mal unter google suchst, dort gibt es eine Menge Material dazu, wie man es angeht, ein OS zu programmieren.


----------



## SilentWarrior (2. Oktober 2004)

Vielleicht interessiert dich das hier:

http://www.tutorials.de/tutorials20706.html


----------



## Kyoko (3. Oktober 2004)

Mit befehle meine ich Anweisungen die unabhängig vom OS sind wie zi#um beispiele ein unabhängiges printf(). Und es gibt Compiler die Befehle haben, z. B. PureBasic oder Visual Basic.
Das Tutorial hab ich schon gelesen, aber trotzdem danke.


----------



## squeaker (3. Oktober 2004)

Die Einzigen OS-Unabhängigen Befehle sind die ASM-Befehle (ohne die Bibliotheken). printf ist der Aufruf einer Standard-Bibliothek in C. Die ist OS-Abhängig. Stell dir blos einmal einen Webserver ohne Bildschirm vor (mit individuellem Betriebsystem). Warum sollte der ein printf haben?

Falls du OS-Unabhängig (zumindest relativ) Programmieren willst, nimm Java.


----------



## tappi (3. Oktober 2004)

Also Funktionen wie printf musst Du als Entwickler eines Betriebssystems selber programmieren. Eigentlich kannst Du nur Assembler für die Entwicklung verwenden, oder C (ohne Libs) mit Inline Assembler. Anders geht es nicht.


----------



## Dario Linsky (3. Oktober 2004)

An Assembler-Aufrufen wird man bei der Entwicklung von Betriebssystemen nicht vorbeikommen, da kann man sich noch so sehr auf den Kopf stellen. Gerade aus dem Grund, dass Dinge wie Treiber und Bootloader so hardwarenah programmiert werden müssen, dass C oder andere Hochsprachen nicht mehr geeignet sind.
Allerdings ist das hier genannte Beispiel der prinft-Funktion aus der Standardbibliothek von den gängigen C-Compilern auch größtenteils ohne Assembler-Aufrufe machbar. Das einzige, was man braucht, ist Schreibzugriff auf den für die Grafikausgabe reservierten Speicher - und an diesen kommt man mit C relativ einfach, wenn man Pointer einsetzt.

Andererseits ist es bei Pascal und davon abgeleiteten Sprachen so, dass das printf-Äquivalent nicht aus einer dynamisch ladbaren Bibliothek stammt, sondern direkt zum Sprachumfang gehört. Mit anderen Worten: Die Textausgabe auf Bildschirmen oder anderen Geräten ist bei Pascal Bestandteil der Grundausstattung der Sprache selbst. Ob das aber in diesem Fall auch funktioniert, kann ich dir nicht sagen.


----------



## tappi (4. Oktober 2004)

Naja er könnte sich ja die Mühe machen und einen Compiler schreiben, der den Source Code direkt Assembler umsetzt. Das habe ich mal gemacht, jedoch wird man schnell merken, dass es einfacher  ist ein Betriebssystem zu programmieren, als einen Compiler.


----------



## Dario Linsky (4. Oktober 2004)

> Naja er könnte sich ja die Mühe machen und einen Compiler schreiben, der den Source Code direkt Assembler umsetzt.


Wozu? Die meisten gängigen Compiler übersetzen den Code in mehreren Schritten, wobei auch Assembler dazu gehört. Beim gcc lässt sich dieser intern verwendete Schritt auch nach außen weitergeben, um die aus dem C-Code erstellte Assembler-Datei zu speichern. Allerdings gehen dabei natürlich Kommentare und Formatierungen verloren und bei ein paar hunderttausend ASM-Anweisungen in einer Datei (die man noch nicht einmal selbst geschrieben hat), wird es schwerer zu pflegen.



> jedoch wird man schnell merken, dass es einfacher  ist ein Betriebssystem zu programmieren, als einen Compiler.


Ich denke, beides wird - je nach Umfang des gewünschten Ergebnisses - ungefähr auf der gleichen Stufe stehen, wenn man sich ernsthaft damit beschäftigen möchte.


----------



## tappi (4. Oktober 2004)

Hallo,

also meiner Erfahung ist, dass Compilerbau komplexer ist als die Entwicklung eines Betriebssystems (soweit, wie das für eine Person überhaupt möglich ist).

(Ich meinte mit meinem Tipp eine nicht-C-Sprache, da ich das mit ASM nur in gcc kenne)


----------



## HCProgger (5. Februar 2005)

Hi,

Also ich wollte auch schon mal eine OS proggen, aber ich habe bisher nur mit NASM und GCC zutun gehabt. Einen anderen Compiler gibt es für dieses Gebiet glaube ich nicht.

Wenn du dich allerdings ernsthaft damit beschäftigen möchtest, dann solltest du LowLevel lesen, das ist ein Online-Magazin in dem es nur um OS-progging geht. Ich die Seite hieß http://www.lowlevel.net. Probier es einfach mal aus. Wenn es diese Seite nicht gibt, dann geh mal auf http://www.robsite.de, dort gibt es in jedem Fall einen Link dazu.

Ich habe alle dieser PDF's (wahlweise auch TXT oder HTML) gelesen und es ist echt gut. Dort wird das Programmieren von OS'sen in NASM und GCC (einmal in Englisch und einmal in Deutsch) erklärt, andere OS'se vorgestellt und erklärt wie das FAT16 Dateisystem funktioniert. (Das ist natürlich nur der Anfang).

Viel Spaß.

HCProgger.


----------



## daddz (15. Februar 2005)

Die Seite heißt http://www.lowlevel.net.tc/ !

greetz
daddz


----------

