The code generator is a visitor that emits bytecodes. Each visit method can call the emit() method to emit a new bytecode. The basic code generator is specialized for modules, classes, and functions. An assembler converts that emitted instructions to the low-level bytecode format. It handles things like generator of constant lists of code objects and calculation of jump offsets.
See About this document... for information on suggesting changes.