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