C — Änderungen 3525 → 3578

Zeile 9: Zeile 9:
 
}}  
 
}}  
  
−
= Kernelprogrammierung mit C =
+
== Kernelprogrammierung mit C ==
 
Da man mit C sehr hardwarenah programmieren kann, eignet sich die Sprache zur Programmierung eines Kernels. Es ist sogar die überwiegende Anzahl der Betriebssystemkernel in C geschrieben. Für andere Bereiche ist C jedoch nicht sonderlich geeignet: beispielsweise für einen Bootsektor. Empfehlenswert ist - wie bei jeder anderen Sprache, die im Bereich der Kernelprogrammierung verwendet werden soll - ein Compiler, der Inlineassembler unterstützt. Hierfür eignet sich der [[gcc]].
 
Da man mit C sehr hardwarenah programmieren kann, eignet sich die Sprache zur Programmierung eines Kernels. Es ist sogar die überwiegende Anzahl der Betriebssystemkernel in C geschrieben. Für andere Bereiche ist C jedoch nicht sonderlich geeignet: beispielsweise für einen Bootsektor. Empfehlenswert ist - wie bei jeder anderen Sprache, die im Bereich der Kernelprogrammierung verwendet werden soll - ein Compiler, der Inlineassembler unterstützt. Hierfür eignet sich der [[gcc]].
 
Für Einsteiger gibt es ein [http://www.cheebi.de/c-kernel-tutorial.pdf Tutorial], welches beschreibt, wie man in den [[Protected Mode]] schaltet und in C geschriebenen Code ausführt.
 
Für Einsteiger gibt es ein [http://www.cheebi.de/c-kernel-tutorial.pdf Tutorial], welches beschreibt, wie man in den [[Protected Mode]] schaltet und in C geschriebenen Code ausführt.
  
−
= Bekannte C-Compiler =
+
== Bekannte C-Compiler ==
  
 
* gcc aus der [http://gcc.gnu.org/ GNU Compiler Collection]
 
* gcc aus der [http://gcc.gnu.org/ GNU Compiler Collection]
Zeile 19: Zeile 19:
 
* Borland [http://dn.codegear.com/article/20841 Turbo C] für DOS (16 Bit/Real Mode)
 
* Borland [http://dn.codegear.com/article/20841 Turbo C] für DOS (16 Bit/Real Mode)
  
−
= Assemblercode in C =
+
== Assemblercode in C ==
 
Während es möglich ist, den allergrößten Teil des Kernels in C zu schreiben, sind für einige wenige Aufgaben nach wie vor einige Zeilen Assemblercode notwendig. Es gibt dabei im Wesentlichen zwei Ansätze:
 
Während es möglich ist, den allergrößten Teil des Kernels in C zu schreiben, sind für einige wenige Aufgaben nach wie vor einige Zeilen Assemblercode notwendig. Es gibt dabei im Wesentlichen zwei Ansätze:
  
Zeile 25: Zeile 25:
 
* '''Externe Assemblerdatei''': Der Assemblercode wird in eine eigene Datei ausgelagert und vom C-Code als eigenständige Funktion aufgerufen. Die Übergabe von Parametern und des Rückgabewerts wird im Artikel [[Aufrufkonventionen]] beschrieben
 
* '''Externe Assemblerdatei''': Der Assemblercode wird in eine eigene Datei ausgelagert und vom C-Code als eigenständige Funktion aufgerufen. Die Übergabe von Parametern und des Rückgabewerts wird im Artikel [[Aufrufkonventionen]] beschrieben
  
−
= Links =
+
== Weblinks =
 +
* [http://openbook.galileocomputing.de/c_von_a_bis_z/c_000Vorwort_000.htm#Xxx999266 Algemeines C-Tutorial]
 
* [http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf Draft des C Standards]
 
* [http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf Draft des C Standards]
 
* [http://www.c-howto.de/ C-Tutorial]
 
* [http://www.c-howto.de/ C-Tutorial]