CS 201
Compiler Construction
Instructor: Rajiv Gupta
Office: 408 EBU II
Tele: 951-827-2558
Email: gupta@cs.ucr.edu
Meeting Times: 11:10-12:30AM, Tuesday-Thursday, SPR 1358
Office Hours: 1:00-2:00PM, Tuesday-Thursday and by appointment
Grader: Vijayanand Nagarajan, vijay@cs.ucr.edu
Class Homepage: http://www.cs.ucr.edu/~gupta/teaching/201-08/
|
Course Description
In this course we will learn about the fundamentals of program analysis (control
and data flow analysis, interprocedural analysis etc.) as well as algorithms for
constructing advanced intermediate program representations (SSA form, Program
Dependence Graph). Next the above analysis techniques and representations will be used to
develop a suite of machine independent code optimizations (redundancy elimination,
dead code elimination etc.). Finally we consider machine dependent optimizations
including global instruction scheduling and register allocation for modern processors that
support instruction level parallelism.
Syllabus
- Code Generation
- Register Allocation
- Control Flow Analysis
- Data Flow Analysis
- Program Representations
- Classical Code Optimizations
- Speculative/Profile-Guided Optimizations
- Interprocedural Analysis
- Array Dependency Analysis
- Instruction Scheduling
Reference books
- Cooper and Torczon. Engineering a Compiler. Morgan Kaufmann, 2003.
- Aho, Lam, Sethi and Ullman. Compilers: Principles, Tecniques, & Tools. Second Edition, Addison-Wesley, 2007.
- Steven Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997.
Course Requirements
- Project - 25%
- Homeworks - 15%
- Exam I - 30% (Feb. 7, 2007)
- Exam II - 30% (March 13, 2007)
Policies
- You are responsible for all material covered in lectures.
- You may discuss assignments with classmates, but the work
you turn in must be your own.
- Examinations must be taken in class on the date they are given.
There will be no exceptions unless you have a very good reason
and have received permission in advance of the due date or
examination.