The EPFL's advanced compiler construction course for SIN/SSC master students is given on Fridays from 10:15 to 12:00 (course) and 13:15 to 15:00 (project) during the summer semester. Courses are in INM 10, project in INF 1.
Overview
You will learn about techniques used to implement high level languages and interpreters, and compilation techniques used to obtain high performance on modern computer architectures. You will also get the opportunity to study one of these techniques in depth and gain experience with implementation issues through several projects in the context of an actual compiler and virtual machine.
- Implementation of high level languages
- Implementation of higher order functions, coroutines, and processes.
- Uniprocessor garbage collector techniques.
- Virtual machines and the efficient implementation of their interpreters.
- Optimization techniques
- Data-flow analysis, program optimization, and code generation across basic blocks, procedures, and complete programs.
- Interprocedural and intraprocedural analysis, intermediate representations, register allocation, and instruction scheduling.
- Dependence analysis and loop transformations.
The course will include several practical projects.
Lectures
- Week 1.
- Introduction 1/page color or 6/page b&w. Project introduction 1/page color or 6/page b&w.
- Week 2.
- Interpreters and Virtual Machines
1/page color or
6/page b&w.
Additional resources: Threaded Code Variations and Optimizations, Stack Caching for Interpreters and vmgen - A Generator of Efficient Virtual Machines Interpreters. - Week 3 and 4.
- Memory management
1/page color or
6/page b&w or
with unrolled animations.
Additional resources: Uniprocessor Garbage Collection Techniques, Space Efficient Conservative Garbage Collection. - Week 5.
- Closure Conversion 1/page color or 6/page b&w
- Week 6.
- Continuations 1/page color or 6/page b&w
- Week 7.
- Tail Calls 1/page color or 6/page b&w
- Week 8.
- Implementation of Object-Oriented languages 1/page color or 6/page b&w or 1/page with animations
- Week 9.
- Introduction to Program Optimization 1/page color or 6/page b&w
- Week 10.
- Data Flow Analysis 1/page color or 6/page b&w
- Week 11.
- Register Allocation 1/page color or 6/page b&w or 1/page with animations.
- Week 12.
- SSA form 1/page color or 6/page b&w.
- Week 13.
- Instruction Scheduling 1/page color or 6/page b&w.
Exam schedule
The exam takes place on Thursday, June 21 and Friday, June 22. Here is the current schedule:
|
|
Projects
Part 0
This first session will familiarize you with the framework you will be working for the rest of this course. You will not be graded, but you absolutely need to complete this part in order to work on the more advanced projects.
- Description: Part 0
Part 0.5
This session will familiarize you with the framework you will be working for the rest of this course. You will not be graded, but you absolutely need to complete this part in order to work on the more advanced projects.
- Description: Part 0.5
Part 1
In this project you will implement mark & sweep garbage collection.
- Description: Part 1
- Start Date: Friday, March 30
- End Date: Thursday, April 26
- Weight: 15%
Part 2
In this project you will implement closure conversion.
- Description: Part 2
- Start Date: Friday, April 27
- End Date: Thursday, May 10
- Weight: 15%
Part 3
In this project you will implement tail call elimination.
- Description: Part 3
- Start Date: Friday, May 11
- End Date: Friday, Mai 18
- Weight: 10%
Part 4
For this part you should choose an advanced project.
- Description: Part 4
- Start Date: Friday, May 18
- End Date: Friday, June 22
- Weight: 30%