Linker, Loader und ausführbare Formate
Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?
- ASie ist stets der Anfang der Funktion main
- BSie ist als erstes Byte der ausführbaren Datei festgelegt
- CSie ist üblicherweise nicht main, sondern Startcode wie _start, der Initialisierungen durchführt und dann main aufruft
Antwort und Erläuterung anzeigen
Antwort: C. Sie ist üblicherweise nicht main, sondern Startcode wie _start, der Initialisierungen durchführt und dann main aufruft
Der Linker bindet das vom C-Laufzeitsystem bereitgestellte Startobjekt (z. B. crt1.o) in das Programm ein und verwendet darin _start als Einsprungpunkt. _start entnimmt die Kommandozeilenargumente dem Stack, initialisiert die Standardbibliothek und globale Objekte und ruft dann main auf. Kehrt main zurück, ruft es mit dem Rückgabewert exit auf und führt die Beendigung durch.