Compilers
Wat gebeurt er met de gegenereerde code als bij registertoewijzing een "spill" optreedt?
- AEr komen instructies bij om waarden naar de stack weg te schrijven en terug te lezen, waardoor het gemakkelijk trager wordt
- BHet aantal registers neemt automatisch toe, zodat alle waarden in registers kunnen staan
- 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.