武汉理工大学计算机科学系林泓 第十二章 代码生成 12.1 代码生成概述 12.2 一个简单的代码生成程序 12.3 几种常用的代码生成程序的开发方法 12.4 全局寄存器分配 12.5 代码生成程序的自动化构造武汉理工大学计算机科学系林泓 12.1 代码生成概述 12.1.1 目标代码的三种形式: 能够立即执行的机器语言代码,所有地址均已 定位; 待装配的机器代码模块,当需要执行时,由连 接装入程序把它们和某些运行程序连接起来, 转换成能执行的机器语言代码; 汇编语言代码,需经过汇编程序汇编,转换成 可立即执行的机器语言代码。武汉理工大学计算机科学系林泓 12.1.2 代码生成要考虑的主要问题 具体细节依赖于目标机器和操作系统 (1)代码生成程序的输入 线性表示、三地址表示、图形表示 (2)计算机指令的选择 x:=y+z LD R0, y ADD R0, z ST R0, x a:=a+1 INC a (3)充分利用寄存器(寄存器分配) (4)选择计算次序(指令调度) 武汉理工大学计算机科学系林泓 12.2 简单的代码生成程序 12.2.1 计算机模型 机器指令形式 指令意义 op