前边产生中间代码之后,后边的事儿就交给了后端,编译器后端主要包括代码生成器和目标代码优化器
代码生成器主要是把中间代码变成目标机器代码,这个过程十分依赖于目标机器,因为不同的机器有不同的字长.寄存器,证书数据类型和浮点数数据类型等
目标代码优化器则对上述代码进行优化,比如寻找合适的寻址方式,使用位移来替代乘法计算,删除指令等
由于现代的CPU相当的复杂,为了支持CPU的复杂特性,编译器的机器指令优化过程也十分复杂.是编译过程更为复杂的是有些编译器支持多种硬件平台,允许编译器编译出多种目标的CPU代码,比如GCC编译器就几乎支持所有的CPU平台,这也导致编译器的指令生成过程更为复杂.