Teoria kompilacji 2

RSS

Cel przedmiotu

Wykład stanowi kontynuację przedmiotu teoria kompilacji (1). Przedstawia si˛e w nim teoretyczne i praktyczne podstawy budowy tylnej części kompilatora (ang. back end), zwłaszcza kompilatora optymalizującego (ang. optimizing compiler). Szczególne miejsce zajmują tutaj zagadnienia przydziału pamięci, translacji do kodu pośredniego oraz optymalizacji metodą analizy przepływu, a także generacji kodu ostatecznego.

Program wykładu

Kontrola typów. System typów, równoważność typów, przeciążalność operatorów, funkcje polimorficzne. Organizacja pamięci. Strategie alokacji pamięci. Dostęp do nazw nielokalnych. Przekazywanie parametrów. Generacja kodu pośredniego. Kod trójadresowy. Tłumaczenie typowych konstrukcji językowych. Generowanie kodu pośredniego na przykładzie kodu dla wyrażeń logicznych. Optymalizacja kodu pośredniego. Bloki podstawowe i grafy przepływu. Pętle w grafach przepływu. Globalna analiza przepływu danych. Iteracyjne rozwiązywanie równań przepływu danych. Optymalizacja w grafach przepływu. Transformacje poprawiające kod. Obsługa synonimów. Optymalizacja przez szparkę. Generacja kodu wynikowego. Generowanie kodu z drzew syntaktycznych i skierowanych grafów acyklicznych. Przydział i wyznaczanie rejestrów. Algorytmy generowania kodu.

Charakterystyka pozostałych zajęć

Prowadzone są zajęcia projektowe, dzięki którym student powinien umieć zdefiniować język formalny do wybranego problemu (zastosowania), zaprojektować i zaimplementować odpowiednie moduły funkcjonalne kompilatora tego języka, przetestować i odpowiednio udokumentować projekt.

Bibliografia

1. Aho A. V., Sethi R., Ullman J. D.: Kompilatory. Reguły, metody i narzędzia, WNT, 2002
2. Waite W., Goos G.: Konstrukcja kompilatorów, WNT, 1989.
3. Hopcroft J. E., Motwani R., Ullman J. D.: Wprowadzenie do teorii automatów, języków i obliczeń, PWN, 2005
4. Hopgood F.R.A. – Metody kompilacji. 1982.

Wszelkie prawa zastrzeżone © 2010 Katedra Informatyki   |   Akademia Górniczno-Hutnicza   |   Realizacja Creative Bastards