Unit 8: Code Generation
This unit is closely related to Unit 7, where the emphasis was on representation of data structures needed for run-time. While there will be some overlap, the emphasis in this unit is on instruction-level intermediate code generation and from intermediate code to target code.
The last phase (or next to the last phase if there is a code optimization phase) of the compilation process is code generation, where the output from the previous steps is finally translated into machine code, ready to execute on the target platform. In this unit, we will start with a discussion of code generation in general before moving on to a more detailed description of the code generation process. This will include an in-depth discussion of three main areas: Instruction Selection, Instruction Scheduling, and Register Allocation. By the end of this unit, you will have a firm understanding of the code generation process.
Completing this unit should take you approximately 17 hours.
8.1: Introduction to Intermediate Code Generation
8.2: Detailed Example: Three Address Code (TAC)
8.3: Additional Intermediate Language Generation Examples
8.4: Generation of Machine Code
8.5: Verification and Validation of Code Generation