Pok-13-wyk-Slajd8
Generacja kodu wynikowego - wprowadzenie
Ostatnią fazą kompilatora jest generator kodu wynikowego, który na podstawie pośredniej reprezentacji programu źródłowego wytwarza równoważny program docelowy.
Generatorowi kodu stawia się wysokie wymagania – kod wynikowy musi być poprawny i wysokiej jakości, musi efektywnie wykorzystywać zasoby maszyny docelowej.
Problem generacji optymalnego kodu jest z matematycznego punktu widzenia nierozstrzygalny, a więc każdy generator kodu musi posługiwać się heurystykami.
W trakcie konstruowania algorytmów generacji i optymalizacji kodu wynikowego przydatna jest grafowa reprezentacja kodu trójadresowego zwana grafem przepływu. Jest on pomocny w rozwiązywaniu dwóch problemów, które mają największy wpływ na efektywność wygenerowanego kodu wynikowego, a którymi są: wybór rozkazów kodu maszynowego i efektywny przydział rejestrów.