The document discusses intermediate code generation in compilers. It describes benefits of using an intermediate representation like retargetability and optimization. Common intermediate representations include syntax trees, postfix notation, and three-address code. Three-address code represents expressions as sequences of instructions with three operands. It is generated from syntax trees or DAGs through syntax-directed translation.