This document discusses code generation in compilers. It covers:
- The code generator takes an intermediate representation and produces target code that is correct and efficient for the target machine.
- Symbol tables are used to track variable semantics, data types, scopes, and storage addresses. Common implementations are unordered lists and ordered linear lists.
- The target machine format can be absolute machine language, relocatable machine language, or assembly language. Memory management involves mapping names to runtime memory addresses.
- Basic blocks, control flow graphs, and structure-preserving transformations like common subexpression elimination are discussed for code optimization.