Wat is SSA-vorm (static single assignment)?

Vorm van een tussenrepresentatie waarin variabelen zo zijn hernoemd dat elke variabele in het programma precies één keer een waarde krijgt. Op samenvoegpunten wordt met een φ-functie een waarde gekozen. De relatie tussen definitie en gebruik is duidelijk, wat optimaliseren vergemakkelijkt.

Japanse benaming: SSA形式

“SSA-vorm (static single assignment)” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Compilers.

Vakgebied: Compilers

Nu oefenen: vragen over SSA-vorm (static single assignment)

Welke uitspraak over de tussenrepresentatie in SSA-vorm is juist?

  1. AAan elke variabele wordt in het programma precies één keer een waarde toegewezen
  2. BAlle variabelen worden in het geheugen geplaatst in plaats van in registers
  3. 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.

“SSA-vorm (static single assignment)” in de toelichting

Vragen met “SSA-vorm (static single assignment)” (2)

  1. Welke uitspraak over de tussenrepresentatie in SSA-vorm is juist?
  2. Als de bovenstaande code in SSA-vorm wordt gebracht, komt na het if-statement een uitdrukking zoals "x3 = φ(x1, x2)". Welke uitspraak over de werking van deze φ-functie is juist?

Verwante termen

Numerieke apertuur (NA) Abstracte syntaxisboom (AST) Basic block Common subexpression elimination Constant folding Control-flow-graaf (CFG) Inlining Instructiescheduling Intermediaire representatie (IR) JIT-compilatie (just-in-time)

Naar de woordenlijst