Intro to Compilers: Code Generation
This course covers advanced compiler topics: generating code for functions, performing type checking to avoid bugs, performing basic compiler optimizations, and performing register allocation. We will cover the theoretical basis of many of these optimizations as well as how they are implemented in compilers. Students will extend the basic compiler constructed in ECE 595.1 to add these advanced features to their compiler that translates C code into RISC-V assembly.
ECE59500
Credit Hours:
1Learning Objective:
After completing this course, you will be able to:- Explain how functions work in programming languages and how to generate code for them
- Explain the purpose of type checking and how to implement it
- Explain basic local optimizations: common sub-expression elimination and dead code elimination
- Explain local and global register allocation
- Build a compiler that supports functions, type checking, and register allocation
Description:
This course covers advanced compiler topics: generating code for functions, performing type checking to avoid bugs, performing basic compiler optimizations, and performing register allocation. We will cover the theoretical basis of many of these optimizations as well as how they are implemented in compilers. Students will extend the basic compiler constructed in ECE 595.1 to add these advanced features to their compiler that translates C code into RISC-V assembly.
Fall 2021 Syllabus
Topics Covered:
Code generationType systems and type checking
Compiler optimization