ECE 59500 - Introduction to Compilers III: Optimization
This is a 5-week course for fully online students. On-campus student will take ECE 57300.
Lecture Hours: 3 Credits: 1
Areas of Specialization:
- Computer Engineering
Requisites by Topic:
Must have completed the first and second courses in this series: 1) Intro to Compilers, Compiler Basics and 2) Intro to Compilers, Code Generation. Comfort with programming, especially data structures and recursion. Experience with object-oriented programming is also beneficial.
This course covers advanced topics in compiler optimization: dataflow analysis and pointer analysis to perform global optimizations, and both low-level loop transformations such as loop-invariant code motion and high-level loop transformations such as loop tiling. The course also explains how compiler generates code for pointers and arrays. Students will build a compiler that performs a basic pointer analysis.
- Engineering a Compiler , Second Edition , Cooper, Keith, Linda Torczon , Safari, an O'Reilly Media Company , 2011
A student who successfully fulfills the course requirements will have demonstrated an ability to:
- Explain regular expressions and lexing procedures
- Explain context-free grammars and LL(1) parsing
- Explain semantic actions and AST construction
- Explain how to translate ASTs into executable code
- Build a basic compiler that can translate a program into executable code
- Extend a compiler to add support for pointers and arrays and implement a pointer analysis
|4||Type checking in compilers|
|6||Optimization: Common subexpression elimination|
|7||Optimization: Dead code elimination|
|8||Local register allocation|
|9||Global register allocation|
Problem sets, programming assignments, final exam. (11/2021)