Compilers
Welke uitspraak over de tussenrepresentatie in SSA-vorm is juist?
- AAan elke variabele wordt in het programma precies één keer een waarde toegewezen
- BAlle variabelen worden in het geheugen geplaatst in plaats van in registers
- CHet programma wordt herschreven tot een vorm zonder enige voorwaardelijke sprong-instructies
Antwoord en toelichting tonen
Antwoord: A. Aan elke variabele wordt in het programma precies één keer een waarde toegewezen
In SSA-vorm worden variabelen zo hernoemd dat aan elke variabele één keer een waarde wordt toegewezen, en op samenvoegpunten wordt met een φ-functie een waarde gekozen. Wordt x tweemaal toegewezen, dan wordt het bijvoorbeeld verdeeld in x1 en x2, zodat duidelijk is welke wordt gebruikt. Doordat het verband tussen definitie en gebruik duidelijk is, zijn optimalisaties zoals constant propagation en het verwijderen van dode code gemakkelijker. Sprongen worden door φ-functies behandeld, zodat sprong-instructies niet verdwijnen. Variabelen staan ook niet in het geheugen; ze worden meestal als kandidaat voor registers behandeld.