is the `official' web-page for this course and has schedule information
Optimizing compilers are essential tools for getting good implementations of high-level languages. By leaving optimizations to the compiler, programmers can concentrate on well-designed, maintainable programs.
Between parsing the input program and writing the generated machine code, optimizing compilers perform a wide range of transformations on a program to
improve its time and space behaviour.
In this course we study a selection of such optimizing transformations and their implementation in Stratego, a language for program transformation based on the paradigm of rewriting strategies. In this year's installment of the seminar we will focus on loop optimizations.
In previous versions of this course a compiler for Andrew Appel's Tiger language was built.
In this year's installment we will take a basic Tiger compiler in Stratego as given and extend it with loop optimizations
We will use the following book (chapters 1 to 6) as the main text of the seminar:
- Randy Allen and Ken Kennedy. Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Morgan Kauffman, 2001.
The following book gives an overview of the phases of a compiler for the Tiger language:
- Andrew Appel. Modern Compiler Implementation in C, Cambridge Univ. Press, 1998.
Further literature consists of articles about Stratego and SPIM that will be handed out in class.
The course is a seminar in which you will give several presentations. The implementation of the compiler extension that you develop should be accompanied by a paper that describes the extension, the programming techniques that you used, and that discusses its relation to the literature.
The final grade will be determined by your presentations (40%) and (the report about) the compiler extension that you develop (60%).