Wykład prowadzony wspólnie przez dwuosobowy zespół: W.Charatonik i P. Polesiuk.
Przekrojowy, ale niezbyt szczegółowy wykład wprowadzający w tematykę kompilacji.
Program:
* Wstęp [1 wykład]
* Leksowanie i parsowanie [3 wykłady]
* Analiza semantyczna [1 wykład]
* Generowanie kodu [3 wykłady]
* Analiza programów i optymalizacja kodu [3 wykłady]
* Wsparcie dla języków wysokopoziomowych [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