由于一个高级程序设计语言的目标代码需反复使用,因而,代码生成器的设计要着重考虑目标代码的质量问题。衡量目标代码的质量主要从占用空间和执行效率两个方面综合考虑。到底产生什么样的目标代码取决于具体的机器结构、指令格式、字长及寄存器的个数和种类,并与指令的语义和所用操作系统、存储管理等都密切相关。又由于目标代码的执行效率在很大程度上依赖于寄存器的使用,所以本章将着重介绍目标代码生成的一些共同问题,如寄存器的分配算法,而不讨论某个特定机器的目标代码生成问题。对寄存器分配的算法仅限定在一个基本块的范围内,以四元式的中间代码作为输入,以一个称作M的模型机的汇编语言作为输出。 |