Overview:
This is a basic course in compiler construction. You will learn how to write a compiler with a special emphasis on code optimizations.
Course Topics:
Compilation of imperative programming languages :
· Language constructs and their compilation
· The architecture of the P machine
· Assignments and expressions
· Space requirments
· Identifying equal sub-trees (linear complexity)
· Conditional and iterative statements, sequences of statements
· Memory allocation for variables of simple type
· Memory allocation for static arrays
· Memory allocation for dynamic arrays
· Memory allocation for records
· Pointers and dynamic memory allocation
· Procedures
· Nesting levels
· Passing parameters by-var / by-value
· Variable of type function
· Formats of machine description
· List scheduling
Intermediate optimizations using data flow analysis :
· Algebraic simplifications
· Constant propagation
· Copy propagation
· Dead-code elimination
· Strength reduction
· Invariant code motion of Loop
. Common subexpression elimination
. Inserting assignment in IF-THEN-ELSE statements
. Load-store elimination
. Efficient array references in loops
. Loop unrolling
. Minimizing number of allocated registers
. Using parallel instructions
Machine-dependent code optimizations :
· Abstract and real machines
· Classification of architectures (VLIW)
· Ways of representing architectures
· Instruction scheduling/List scheduling
Parsing and lexical analysis :
· Becoming familiar with software tools like Flex and Bison
Most of the topics will be covered but not all of them.
Text Books:
by Alfred V.
Aho (Author), Monica S. Lam (Author), Ravi Sethi (Author), Jeffrey D.
Ullman (Author)
"Compilers: Principles, Techniques and Tools (2nd Edition)"
, Addison Wesley; 2 edition (August 31, 2006)
R. Wilhelm and D. Maurer - "Compiler
Design", Addison-Wesley, 1995 (We will mainly study chap. 2,12)