Linker, loader en uitvoerbare formaten

Welke omschrijving van de relocatie die de linker uitvoert, is juist?

  1. ANadat de definitieve adressen van code en data zijn bepaald, worden de adressen in instructies en data herschreven naar de juiste waarden
  2. BTijdens uitvoering wordt het programma naar een andere computer verplaatst en daar voortgezet
  3. CWanneer het geheugen tekortschiet, worden pagina's naar opslag verplaatst
Antwoord en toelichting tonen

Antwoord: A. Nadat de definitieve adressen van code en data zijn bepaald, worden de adressen in instructies en data herschreven naar de juiste waarden

De compiler maakt elk bestand alsof het op adres 0 begint en legt de plaatsen waar adressen van functies in andere bestanden of van eigen variabelen worden gebruikt vast als relocatie-informatie. Nadat de linker alle bestanden achter elkaar heeft gezet en de werkelijke adressen heeft bepaald, berekent hij voor elke vastgelegde plaats het juiste adres (of de afstand vanaf PC) en schrijft dat in de instructie. Bij dynamisch linken wordt een deel van dit soort herschrijving tijdens uitvoering door de dynamische linker gedaan.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Bij het linken van een C-programma verschijnt de fout „undefined reference to `foo'”. Wat is de meest waarschijnlijke oorzaak?
  2. In zowel a.c als b.c is een globale functie void init(void) met dezelfde naam gedefinieerd zonder static, en de bestanden worden gelinkt. Wat gebeurt er?
  3. Wat is het juiste effect als in C een functie met static wordt gedefinieerd (bijvoorbeeld static int helper(void))?
  4. Wat is de juiste betekenis van „extern int count;” in C?
  5. Welke uitspraak over het ELF-formaat, dat veel op Linux wordt gebruikt, is juist?

Vergelijkingen bij dit onderwerp