Metody realizacji języków programowania/MRJP Ćwiczenia 7

From Studia Informatyczne

Zadanie 1 - bloki bazowe

Wyznacz bloki bazowe dla kodu wygenerowanego w Zadaniu 2 z ćwiczeń do poprzedniego wykładu. Stwórz graf przepływu sterowania i wskaż w nim pętle.

Zadanie 2 - sprowadzanie do postaci SSA

Przetłumacz poniższy fragment programu na kod czwórkowy i sprowadź ten kod do postaci SSA. Wstaw funkcje \phi tylko tam, gdzie jest to konieczne. Pamiętaj o zmianie nazw (dodaniu indeksów) zmiennych.

while (a != 0) {
  if (a < 0) {
    b = 1;
  } else {
    b = -1;
  }
  a = a + b;
}

Zadanie 3 - trudniejsze sprowadzanie do postaci SSA

Teraz sprowadź do postaci SSA kod z zadania 1. Znajdź dominatory w grafie i wykaż, że miejsca wstawienia funkcji \phi wyliczane za pomocą dominatorów są takie same, jak wyliczane za pomocą podanej na wykładzie definicji "ścieżkowej".