Compilers

Welke uitspraak over driehoeksadrescode (three-address code), een tussenrepresentatie, is juist?

  1. AEén instructie kan een willekeurig aantal bewerkingen en haakjes bevatten
  2. BElke instructie bestaat uit maximaal drie adressen en één bewerking
  3. CAls adres wordt altijd een fysiek geheugenadres geschreven
Antwoord en toelichting tonen

Antwoord: B. Elke instructie bestaat uit maximaal drie adressen en één bewerking

Bij three-address code wordt een complexe expressie ontleed in een reeks eenvoudige instructies met slechts één bewerking. x = (a + b) * c wordt bijvoorbeeld t1 = a + b en x = t1 * c, en in één instructie komen maximaal drie adressen voor: het resultaat en twee operanden. Aan tussenwaarden worden tijdelijke namen (zoals t1) gegeven. Zo is de volgorde van berekening duidelijk en zijn optimalisatie en omzetting naar CPU-instructies gemakkelijker. Adressen zijn variabelen of tijdelijke namen, geen fysieke adressen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Wat wordt bepaald bij de levendigheidsanalyse (liveness analysis) die als voorbereiding op registertoewijzing wordt uitgevoerd?
  2. In een functie bedraagt het grootste aantal gelijktijdig levende waarden 5. Als de interferentiegraaf buiten deze 5 geen beperkingen oplegt, hoeveel registers zijn dan minstens nodig om alle waarden zonder spill in registers te plaatsen?
  3. Hoeveel keer worden de iteratietest en sprong uitgevoerd als een lus met 100 iteraties wordt herschreven met loop unrolling waarbij de body viermaal achter elkaar wordt gezet? (100 is deelbaar door 4.)
  4. Welke algemene volgorde waarin uit een C-programma een uitvoerbaar bestand ontstaat is juist?
  5. Hoe heet de optimalisatie waarbij een korte reeks gegenereerde machinecode door een klein venster wordt bekeken en onnodige combinaties van instructies door betere instructies worden vervangen?

Vergelijkingen bij dit onderwerp