Linker, loader en uitvoerbare formaten

Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?

  1. AHet is altijd het begin van de functie main
  2. BHet is vastgelegd als het eerste byte van het uitvoerbare bestand
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat gebeurt er in het algemeen met de waarde 3 als de C-functie main eindigt met „return 3;”?
  2. Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?
  3. Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?
  4. Wat is het belangrijkste doel van name mangling in C++, waarbij de compiler symboolnamen maakt door informatie zoals argumenttypen aan de functienaam toe te voegen?
  5. Waarvoor wordt de Linux-functie dlopen (overeenkomend met LoadLibrary op Windows) het meest passend gebruikt?

Vergelijkingen bij dit onderwerp