CT: Compiling Techniques
Welcome to Compiling Techniques
Learning Outcomes
On successful completion of this course, you should be able to:
- analyse compilation tasks and to apply standard compilation techniques.
- develop, implement and apply modifications to standard compilation techniques and algorithms wherever this is necessary.
- 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