Unser erstes Programm in C (PI5): Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „Unser erstes Programm wird zunächst nichts tun. Es wird einfach eine Dauerschleife durchlaufen. Dies dient als Grundbaustein für alle weiteren Versuche. Ich werde erklären, wie ein solches Programm erstellt, kompiliert und ausgeführt wird. Zunächst schauen wir, ob alles funktioniert. === Sourcecode erstellen === Leider kommen wir bei BareMetal mit C nicht an Assembler vorbei. Auch wenn das Assemblerprogramm zur Zeit nicht wirklich viel tut, wird es s…“ |
|||
| Zeile 4: | Zeile 4: | ||
Öffnen Sie ein Textprogramm, um unser erstes Assemblerprogramm zu schreiben: | Öffnen Sie ein Textprogramm, um unser erstes Assemblerprogramm zu schreiben: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="GAS"> | ||
// | // | ||
// The first program | // The first program | ||
| Zeile 29: | Zeile 29: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Hier wird einfach eine Endlosschleife erzeugt. | Hier wird einfach eine Endlosschleife erzeugt. | ||
=== Kompilieren des Programms mit make === | === Kompilieren des Programms mit make === | ||
Version vom 20. August 2024, 19:59 Uhr
Unser erstes Programm wird zunächst nichts tun. Es wird einfach eine Dauerschleife durchlaufen. Dies dient als Grundbaustein für alle weiteren Versuche. Ich werde erklären, wie ein solches Programm erstellt, kompiliert und ausgeführt wird. Zunächst schauen wir, ob alles funktioniert.
Sourcecode erstellen
Leider kommen wir bei BareMetal mit C nicht an Assembler vorbei. Auch wenn das Assemblerprogramm zur Zeit nicht wirklich viel tut, wird es später zum Beispiel für die Interrupt-Progrogramierung benötigt.
Öffnen Sie ein Textprogramm, um unser erstes Assemblerprogramm zu schreiben:
//
// The first program
// 01.07.2024 www.satyria.de
//
.section .init // Ensure the linker places this at the beginning of the kernel image
.globl _start // Generates a global label
_start: // The label _start (entry address)
mov sp, #0x80000 // Create a stack of 512KB (524288 bytes)
b main // Branch to "main"
Speichern Sie die Datei im Standardverzeichnis unter Windows: C:\msys64\home\xxx (wobei xxx in der Regel Ihr Benutzername ist). Unter Linux können Sie die Datei im Home-Verzeichnis speichern. Geben Sie der Datei den Namen erstes.S. Die Endung .S kennzeichnet die Datei als Assembler-Sourcecode.
Da wir ja in C programmieren wollen schreiben wir noch ein kleines main:
//
// main.c
//
int main (void)
{
while (1){}
}
Hier wird einfach eine Endlosschleife erzeugt.
Kompilieren des Programms mit make
Zuvor habe ich beschrieben unter "Arbeiten mit Make und Linker-Script" beschrieben, wie wir ein Makefile schreiben. Mit diesem Makefile können wir auch dieses Programm kompilieren, wenn im Verzeichnis die Datei "Makefile" und "linker.ld" vorhanden sind:
make
| < Zurück | ^ Hauptseite | weiter > |