Metody realizacji języków programowania

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

  • 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 pośredniego.
  • Zarządzanie pamięcią . 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, Wydawnictwa Naukowo-Techniczne, Warszawa 2001.
  • W. Waite, G. Goos, Konstrukcja kompilatorów, Wydawnictwa Naukowo-Techniczne, Warszawa 1989
  • D. Gries, Konstrukcja translatorów dla maszyn cyfrowych, Wydawnictwa Naukowo-Techniczne, Warszawa 1984

Moduły

  1. Wstęp
  2. Tablica symboli (Ćwiczenia)
  3. Statyczna analiza semantyczna (Ćwiczenia)
  4. Maszyna wirtualna I (Ćwiczenia)
  5. Maszyna wirtualna II (Ćwiczenia)
  6. Generowanie kodu pośredniego (Ćwiczenia)
  7. Sprowadzanie kodu do postaci SSA (Ćwiczenia)
  8. Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
  9. Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
  10. Realizacja obsługi sygnałów/wyjątków
  11. Optymalizacja II (Ćwiczenia)
  12. Kompilacja języków programowania funkcyjnego (Ćwiczenia)
  13. Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)
  14. Laboratorium