In the course we discuss the following topics (Chapters refer to Transform.ModernCompilerImplementationInML). The project entries in the schedule are steps in building the TigerCompiler. Week 1 * Meeting 1 (29/10) * Introduction, CompilerArchitecture, TigerLanguage, Stratego.StrategoLanguage (Chapter 1, Appendix A) * Meeting 2 (2/11): * Translating Tiger to MIPS * Tiger Abstract Syntax, Assembly Code (Chapter 4) * Tiger Eval * Project * ExtendTigerWithDoWhile Week 2 * Meeting 3 (5/11) * Translation To IntermediateRepresentation (Chapter 7) * Meeting 4 (9/11) * no meeting scheduled (voorlichting) * Project * TranslateExpressionsByHand * TranslateExpressionsToIntermediateRepresentation Week 3 * Meeting 5 (12/11) * Instruction Selection (Chapter 9) * Main.NielsJanssen * Meeting 6 (16/11) * Canonical Form for IntermediateRepresentation (Chapter 8) * Main.MarcelBroeken * Project * IR2ASM: Instruction Selection for MIPS * CanonicalizeIR: canonicalize Intermediate Representation Week 4 * Meeting 7 (19/11) * Translating Declarations (Chapters 5, 6, 7, 12) * Main.MartinBravenboer * Meeting 8 (23/11) * Loose ends in the basic compiler * Project * Finish basic compiler * week 5-6: Polish and extend with optimizers Week 5 * Meeting 9 (26/11) * Dataflow Analysis (Chapter 17) * Main.PaulHagg * Meeting 10 (30/11) * Register Allocation (Chapter 10, 11) * Jory van Zessen Week 6 * Meeting 10 (3/12) * The Memory Hierarchy (Chapter 21) * Main.WesselDankers * Meeting 11 (7/12) * Loop Optimizations (Chapter 18) * Main.RobVermaas Week 7 * Meeting 11 (10/12) * Pipelining and Scheduling (Chapter 20) * Main.AlanVanDam * Meeting 11 (14/12) * Compiling Functional Programming Languages (Chapter 15) * Jory van Zessen, Main.MartinBravenboer Week 8 * Finish the TigerCompiler (See HpcProject)