Pok-13-wyk-Slajd9
Generacja kodu – graf przepływu
Blok podstawowy jest liniowym fragmentem kodu, do którego sterowanie wchodzi na początku i wychodzi na końcu. Na poziomie bloków podstawowych można stosować wiele przekształceń ulepszających nie zmieniających zbioru wyrażeń obliczanych przez blok.
Kod trójadresowy dzieli się na bloki podstawowe według następującego algorytmu:
- rozpoczynamy od wyznaczenia zbioru liderów, czyli pierwszych instrukcji bloków podstawowych, zgodnie z następującymi regułami:
- instrukcja, od której rozpoczyna się wykonywanie programu jest liderem
- instrukcja, która jest celem skoku warunkowego lub bezwarunkowego jest liderem
- instrukcja bezpośrednio po instrukcji skoku warunkowego lub bezwarunkowego jest liderem
- blok podstawowy to sekwencja instrukcji rozpoczynająca się od lidera i rozciągająca do instrukcji poprzedzającej następnego lidera.
W przedstawionym przykładzie liderów bloków podstawowych wyróżniono czerwoną czcionką.
Z podzielonego na bloki podstawowe kodu trójadresowego łatwo już skonstruować graf przepływu.
Graf przepływu jest grafem dwudzielnym, w którym wierzchołkami są bloki bazowe a krawędziami przepływy sterowania między blokami. Jeden z bloków podstawowych jest wyróżniony jako blok początkowy – od niego rozpoczyna się wykonywanie programu.