Compilers

Wat wordt bij het verwijderen van dode code (dead code elimination) verwijderd?

  1. ADe code van het meest uitgevoerde, belangrijkste deel van het programma
  2. BDelen die nooit worden uitgevoerd en berekeningen waarvan het resultaat nergens wordt gebruikt
  3. CUitvoerinstructies om resultaten op het scherm weer te geven
Antwoord en toelichting tonen

Antwoord: B. Delen die nooit worden uitgevoerd en berekeningen waarvan het resultaat nergens wordt gebruikt

Het verwijderen van dode code is een optimalisatie waarbij onder meer de inhoud van een tak waarvan de voorwaarde altijd onwaar is en die dus nooit wordt uitgevoerd, en toewijzingen waarvan het resultaat nergens wordt gebruikt, worden verwijderd. Na constant propagation en constant folding ontstaan veel toewijzingen die niet meer worden gebruikt, zodat ze in combinatie worden toegepast. Vaak uitgevoerde delen zijn juist belangrijke delen die sneller moeten worden gemaakt en mogen niet worden verwijderd. Instructies met een van buiten zichtbaar effect, zoals uitvoer naar het scherm, zijn deel van het resultaat van het programma en worden niet verwijderd.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke combinatie van voordeel en nadeel van het inlinen (inline expansion) van functies is juist?
  2. Welk effect van loop unrolling is juist?
  3. Welke berekening in de bovenstaande lus komt in aanmerking voor loop-invariant code motion (verplaatsing buiten de lus)? (x en y worden in de lus niet gewijzigd.)
  4. Welke transformatie is juist als in de bovenstaande lus strength reduction wordt toegepast op de indexberekening i * 4?
  5. Wat is de belangrijkste reden dat de bovenstaande lus moeilijk te vectoriseren is met SIMD-instructies?

Vergelijkingen bij dit onderwerp