Compilers

Welke uitspraak over een basisblok (basic block) is juist?

  1. AEen reeks instructies zonder sprongen erin of eruit, die altijd achtereenvolgens worden uitgevoerd
  2. BAlle instructies binnen één functie samengevoegd tot één geheel
  3. CDe body van een lus meerdere malen achter elkaar geschreven, zodat het aantal iteraties afneemt
Antwoord en toelichting tonen

Antwoord: A. Een reeks instructies zonder sprongen erin of eruit, die altijd achtereenvolgens worden uitgevoerd

Een basisblok is een reeks instructies met alleen aan het begin een ingang en alleen aan het eind een uitgang; eenmaal begonnen met uitvoeren wordt het blok niet halverwege verlaten en kan er niet halverwege worden ingestapt. Blokken worden afgebakend bij instructies die doel van een sprong zijn en direct na sprong-instructies. Omdat de volgorde van uitvoering binnen het blok vastligt, zijn lokale optimalisaties gemakkelijk, en de totale stroom wordt weergegeven met een controleflowgraaf waarvan de blokken de knopen zijn. Een hele functie bestaat gewoonlijk uit meerdere basisblokken, en het achter elkaar plaatsen van lusbodies is loop unrolling.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke combinatie van wat knopen en pijlen in een controleflowgraaf voorstellen is juist?
  2. Welke uitspraak over de tussenrepresentatie in SSA-vorm is juist?
  3. 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?
  4. Welk voorbeeld van constant folding in een compiler is juist?
  5. Welke code ontstaat uiteindelijk als op de bovenstaande code herhaaldelijk constant propagation en constant folding worden toegepast?

Vergelijkingen bij dit onderwerp