Wykład prowadzony wspólnie przez trzyosobowy zespół: K. Bacławski,
W.Charatonik i P. Polesiuk lub M. Materzok.
Przekrojowy, ale niezbyt szczegółowy wykład wprowadzający w tematykę
kompilacji.
Program:
* Wstęp [wch, 1 wykład]
* Leksowanie i parsowanie [wch, 3 wykłady]
* Analiza semantyczna [kba, 1 wykład]
* Generowanie kodu [kba, 3 wykłady]
* Analiza programów i optymalizacja kodu [wch, 3 wykłady]
* Wsparcie dla języków wysokopoziomowych [ppo/mma, 4 wykłady]
W czasie semestru przewidujemy około sześciu niewielkich zadań na pracownię
polegających na doimplementowaniu do przygotowanego szablonu poszczególnych
funkcjonalności kompilatora -- tak, aby pod koniec semestru każdy student
napisał własny kompilator prostego języka imperatywnego. Pracownia będzie
prowadzona w języku OCaml.
Wymagania:
* Metody programowania (struktura języków programowania, składnia abstrakcyjna i konkretna)
* Architektury systemów komputerowych (kod trójadresowy, graf kontroli przepływu, tłumaczenie C do kodu maszynowego, ramki stosu, konwencja wywołania procedur, asembler, konsolidacja, relokacja, biblioteki współdzielone, MIPS ISA)
Literatura:
* Modern Compiler Implementation in ML, Appel
* Compilers: Principles, Techniques, and Tools, Aho & Ullman
* Engineering: A Compiler, Cooper & Torczon
* Advanced Compiler Design and Implementation, Muchnick
* The Garbage Collection Handbook, Jones