Metody realizacji języków programowania
Forma zajęć
Wykład (30 godzin) + laboratorium (30 godzin)
Opis
Celem tych zajęć jest przedstawienie najważniejszych algorytmów i struktur danych służących kompilacji i wykonywaniu skompilowanych programów. Omówione zostaną: maszyna wirtualna czyli środowisko wykonywania programów, tablica symboli, algorytmy syntezy kodu wynikowego oraz niektóre zaawansowane zagadnienia kompilacji.
Sylabus
Autor sylabusa
- Andrzej Salwicki
Wymagania wstępne:
- Programowanie obiektowe
- Języki, automaty i obliczenia
- Podstawy kompilatorów
Zawartość:
Tablica symboli - dla języka typu Java tablica symboli to poważne wyzwanie. Statyczna analiza semantyczna. Maszyna wirtualna. Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA. Optymalizacja kodu posredniego. Zarządzanie pamiecią . Odśmiecanie. Realizacja obsługi wyjątków/ sygnałów. Kompilacja języków programowania funkcyjnego. Realizacja obiektów aktywnych (wątków, procesów) w języku z procesami współbieżnymi i rozproszonymi.
Literatura:
- A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
- W. Waite, G. Goos, Konstrukcja kompilatorów, WNT, 1989
- D. Gries Konstrukcja translatorów dla maszyn cyfrowych ,WNT, 1984
- Internet - jak widać literatura w języku polskim nie jest zbyt obszerna. Zachęcamy do szukania informacji w internecie. Zacznij od zadawania pytań wikipedii i google. Np. do wyszukiwarki Google (tj. http://google.com) wpisz "SSA form" lub tylko "SSA".
MRJP wprowadza definicje
analiza kodu źródłowego
analiza leksykalna
analiza składniowa
analiza poprawności typów (statyczna analiza semantyczna)
synteza
generowanie kodu pośredniego
optymalizacja kodu
generowanie kodu wynikowego
środowisko czasu wykonania (maszyna wirtualna)
zarządzanie pamięcią
odśmiecanie
Moduły
- Wstęp (Ćwiczenia)
- Tablica symboli (Ćwiczenia)
- Statyczna analiza semantyczna (Ćwiczenia)
- Maszyna wirtualna I (Ćwiczenia)
- Maszyna wirtualna II (Ćwiczenia)
- Generowanie kodu pośredniego (Ćwiczenia)
- Sprowadzanie kodu do postaci SSA (Ćwiczenia)
- Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
- Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
- Realizacja obsługi sygnałów/wyjątków (Ćwiczenia)
- Optymalizacja II (Ćwiczenia)
- Kompilacja języków programowania funkcyjnego (Ćwiczenia)
- Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)