Compilers

Wat gebeurt er met de gegenereerde code als bij registertoewijzing een "spill" optreedt?

  1. AEr komen instructies bij om waarden naar de stack weg te schrijven en terug te lezen, waardoor het gemakkelijk trager wordt
  2. BHet aantal registers neemt automatisch toe, zodat alle waarden in registers kunnen staan
  3. COngebruikte waarden worden verwijderd, zodat het aantal instructies afneemt
Antwoord en toelichting tonen

Antwoord: A. Er komen instructies bij om waarden naar de stack weg te schrijven en terug te lezen, waardoor het gemakkelijk trager wordt

Een spill is het in het geheugen (op de stack) plaatsen van sommige waarden wanneer er meer gelijktijdig levende waarden zijn dan registers. Bij elk gebruik van zo'n waarde is een leesinstructie nodig en bij elke wijziging een schrijfinstructie, zodat het aantal instructies toeneemt en het door de geheugentoegangen gemakkelijk trager wordt. De compiler laat daarom vaak gebruikte waarden, bijvoorbeeld in lussen, in registers en kiest weinig gebruikte waarden om te spillen. Het aantal registers ligt vast door de CPU en neemt niet toe, en het verwijderen van overbodige waarden is iets anders.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Wat is het belangrijkste doel van instructieplanning (instruction scheduling) in een compiler?
  2. Welk effect heeft het toepassen van tail call optimization op de laatste recursieve aanroep van de bovenstaande functie?
  3. Welk verschil tussen een compiler en een interpreter is juist?
  4. Welke uitspraak over een uitvoeringsomgeving die JIT-compilatie gebruikt is juist?
  5. Welke uitspraak over de basisopzet van LLVM is juist?

Vergelijkingen bij dit onderwerp