COMP36512: Compilers (2010-2011)
Any program written in a programming language must be translated before it can be executed. This translation is typically accomplished by a software system called compiler. This module aims to introduce students to the principles and techniques used to perform this translation and the issues that arise in the construction of a compiler.
|Programme outcome||Unit learning outcomes||Assessment|
|A2 A3 A5 B1 B3||Understand the principles governing all phases of the compilation process.|
|A2 A3 A5||Understand the role of each of the basic components of a standard compiler.|
|A2 A3 A5||Have awareness of the problems of and methods and techniques applied to each phase of the compilation process.|
|A2 A3 A5 B1 B3||Apply standard techniques to solve basic problems that arise in compiler construction.|
|A2 A3 A5 B1 B3||Understand how the compiler can take advantage of particular processor characteristics to generate good code.|
What is a compiler? A high-level view of compilation. General structure of a compiler. An overview of compilation technology.
Lexical Analysis (Scanning)
Regular languages/expressions, finite state machines, building regular expressions from a finite automaton.
Syntax Analysis (Parsing)
Expressing Syntax, Context Free Grammars, Top-Down Parsing, Bottom-Up parsing.
Context-sensitive analysis, Attribute Grammars, Symbol Tables, Type Checking.
Properties, taxonomy, Graphical IRs, Linear IRs.
The Procedure Abstraction, Linkage convention, Run-time storage organisation.
Code Shape, Instruction Selection, Register Allocation, Instruction Scheduling.
Topics in Compiler Construction
Code Optimisation, JIT Compilation.