Compiler Construction

Core Course

People

Reinhard Wilhelm, Sebastian Hack, Roland Leißa, Clemens Hammacher, Christoph Mallon

General Information

The course treats compiler construction for imperative programming languages. This includes lexical, syntactical, and semantic analysis as well as static program analysis, optimization, and code generation. This course provides all necessary theoretical knowledge required to implement a compiler from scratch, which forms the practical part of the lecture.

All students are asked to register for the exams for the winter semester 2013. Exam registration is possible from now on until November 17th, 2013. A withdrawal is possible two weeks before the first exam at the latest. Most students can use the HISPOS. Students of economy computer science, erasmus students, junior students and to some extent students from other courses of studies must use other systems.

Exams

Lecture

Please register for the lecture on this page.

Tutorial

Support

These services are only available from within the university network. You can use a VPN to connect to these services from other locations.

Material

  1. The Structure of Compilers
  2. Lexical Analysis
  3. Grammars
  4. Pushdown Automata and Parser
  5. Recursive Equations over Grammars
  6. LL Parser
  7. LR Parser
  8. Attribute Grammars
  9. Attribute Dependencies
  10. Program Analysis
  11. Intra-procedural Data Flow Analysis
  12. SSA
  13. Global Value Numbering (GVN)
  14. LLVM-IR
  15. Intermediate Representation Construction in a Nutshell
  16. Code Generation on Expression Trees
  17. SSA Register Allocation
  18. Instruction Selection on SSA DAGs using PBQP

Note: To download background reading, it may be necessary to be in the university's subnet due to licensing issues of the papers' publishers

Exercises

  1. Exercise 1 (corresponding Mini Test 1)
  2. Exercise 2 (corresponding Mini Test 2)
  3. Exercise 3
  4. Exercise 4 (corresponding Mini Test 3)
  5. Exercise 5 (reference file for the pretty printer)
  6. Exercise 6 (corresponding Mini Test 4)
  7. Exercise 7 (corresponding Mini Test 5)
  8. Exercise 8
  9. Exercise 9 (corresponding Mini Test 6)
  10. Exercise 10 (corresponding Mini Test 7)
  11. Exercise 11
  12. Exercise 12

Project Material

Modus Operandi

There will be eight voluntary mini tests which will take place in the last 20 minutes within the tutorial. Additionally, there will be voluntary exercises. To get a course certificate, students must pass the final exam and the project. Final grades will be based on the exam and the project.

Literature list