# Betriebssystem in C



## Piesbruhder (14. Dezember 2002)

Hallo Leute,
Ich brauche mal wieder Hilfe. Im ersten Moment denkt ihr bestimmt,
dass das hier das falsche Forum sei aber dem ist nicht so (jedenfalls
nicht eindeutig, finde ich). Zuerst schildere ich mal die Situation:

Ich versuche, nur aus Spaß, ein kleines Betriebssystem zu schreiben.
Ich habe jetzt einen Bootsector fertig. Er bootet und bleibt dann
stehen. Weil mir Assembler aber zu mühsam ist, würde ich gerne in C
(bzw. C++) weitermachen.

Frage:
Geht das? Wenn ja, was muss ich tun, damit das Assembler-Programm in
C-Programm aufruft? Wenn es nicht geht, ab welchem Punkt kann ich dann
C benutzen?


Ich hoffe es kann mir wie immer jemand helfen und danke schonmal für
die Antworten.

Gruß, Piehsbruhder


----------



## Dario Linsky (14. Dezember 2002)

> Geht das?


Ja - und nein. Du brauchst auf jeden Fall Assembler für den Bootsektor, weil der Bootloader genau 512 Bytes gross sein muss. Der Bootloader ruft dann den eigentlichen Betriebssystemkernel auf - in meinem Tutorial war das beides in eins.



> Wenn ja, was muss ich tun, damit das Assembler-Programm in
> C-Programm aufruft?


Erstmal musst Du bedenken, dass Du ja vorher kein Betriebssystem hast. Das Problem dabei ist, dass die Standard-Funktionen (printf, scanf, ...) abhängig vom installierten Betriebssystem sind. Das heisst also, die können wir nicht gebrauchen und müssen uns das alles selber schreiben. 
Die Bildschirmausgabe musst Du demnach direkt in den Grafikspeicher schreiben, was aber eigentlich gar nicht so besonders schwer ist. Wenn das funktioniert, kannst Du das C-Programm mit gcc so compilieren, dass der Einsprungpunkt vom Kernel (in C) genau die Speicheradresse ist, die vom Bootloader aufgerufen wird.

An Assembler kommst Du aber so oder so erstmal nicht vorbei, weil Du für den Zugriff auf die einzelnen Geräte nun mal *sehr* hardwarenah programmieren musst. Und dazu reicht C leider nicht ganz aus.
C++ kannst Du zwar genau so nehmen, aber macht eigentlich keinen Sinn, weil Du für die grundlegenden Funktionen des Systems und den Kernel keine OOP brauchst.


----------



## tappi (11. Februar 2003)

hmmmm also so schwer od. schlimm ist Assembler nun auch nicht.

Schau dir mal meine Dokumentation über Betriebssysteme und Assembler Programmierung an, auch unter dem Gesichtspunkt, dass du bei der C Systemprogrammierung nicht an Inline Assembler vorbeikommst.

FDOS Betriebssystem und Dokumentation


----------



## defc0n1 (25. August 2004)

*Betriebssystem programmieren*

Hallo 

ich würde gerne mehr zu diesem Thema wissen.Also wenn mir einer von euch etwas mehr davon erzählen könnte.
Übrigens Tappi dein Link funktioniert nicht und Dario deiner auch nicht.

Vielen Dank im vorraus

Fabian


----------



## Christian Fein (25. August 2004)

Bitte keine uralt Threads rauskramen!


----------

