CT: Compiling Techniques

Welcome to Compiling Techniques

Learning Outcomes

On successful completion of this course, you should be able to: 

  1. analyse compilation tasks and to apply standard compilation techniques.
  2. develop, implement and apply modifications to standard compilation techniques and algorithms wherever this is necessary.
  3. understand and implement design decisions in modern compilers.
Course Outline

* Introduction: structure of a compiler 
* Lexical analysis: tokens, regular expressions, Lex 
* Parsing: context-free grammars, predictive and LR parsing 
* Abstract syntax: semantic actions, abstract parse trees 
* Semantic analysis: symbol tables, bindings, type-checking 
* Stack frames: representation and abstraction 
* Intermediate code: representation trees, translation 
* Basic blocks and traces: canonical trees and conditional branches 
* Instruction selection: algorithms for selection, RISC and CISC 
* Liveness analysis: solution of dataflow equations 
* Register allocation: colouring by simplification, coalescing 
* Real assembly language: ARM, MIPS, or RISC-V 
* Advanced Topics may include: automatic parallelisation, popular open-source compilers: GCC, LLVM, MLIR

License
All rights reserved The University of Edinburgh