Linker, loader en uitvoerbare formaten
Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
- AHet is altijd het begin van de functie main
- BHet is vastgelegd als het eerste byte van het uitvoerbare bestand
- CMeestal is het niet main maar opstartcode zoals _start, die initialiseert en daarna main aanroept
Antwoord en toelichting tonen
Antwoord: C. Meestal is het niet main maar opstartcode zoals _start, die initialiseert en daarna main aanroept
De linker bouwt het door de C-runtime geleverde opstartobject (zoals crt1.o) in het programma in en gebruikt _start daarin als ingang. _start haalt de opdrachtregelargumenten van de stack, initialiseert onder meer de standaardbibliotheek en globale objecten en roept dan main aan. Als main terugkeert, roept het met de retourwaarde exit aan en verzorgt de beëindiging.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten