# Code generation¶

The module ppci.codegen provides functions and classes to generate code.

## Back-end¶

The back-end is more complicated. There are several steps to be taken here.

1. Tree creation
2. Instruction selection
3. Register allocation
4. Peep hole optimization

### Canonicalize¶

During this phase, the IR-code is made simpler. Also unsupported operations are rewritten into function calls. For example soft floating point is introduced here.