第十二章 目标代码生成 代码生成概述 ■一个简单的代码生成器 ◆且标机器模型 ◆一个简单的代码生成器 寄存器分配(略) ■DAG的目标代码(略) ■作业 2025/412 课程目录国心
2025/4/2 1 第十二章 目标代码生成 ◼ 代码生成概述 ◼ 一个简单的代码生成器 ◆ 目标机器模型 ◆ 一个简单的代码生成器 ◼ 寄存器分配(略) ◼ DAG的目标代码(略) ◼ 作业 课程目录
目标代码生成概述p274 ■于 逻辑阶段编译程序的最后一个阶段 ■输入和输出中间代码 等价的目标代码 ■目标代码的一般形式 ◆绝对机器代码所有地址均已定位 0 优点:可立即执行 缺点:不能独立编译各模块,灵活性差 ◆可再定位机器代码需经连接与装入才可执行° 口优点:子程序可单独编译 缺点:需经汇编器辅助代码生成 0 ◆汇编语言代码 0 优点:目标程序好读、可移植 ▣缺点:需经汇编器辅助代码生成 202 国
2025/4/2 2 目标代码生成概述 p274 ◼ 逻辑阶段 编译程序的最后一个阶段 ◼ 输入和输出 中间代码 等价的目标代码 ◼ 目标代码的一般形式 ◆绝对机器代码 所有地址均已定位 优点:可立即执行 缺点:不能独立编译各模块,灵活性差 ◆可再定位机器代码 需经连接与装入才可执行 优点:子程序可单独编译 缺点:需经汇编器辅助代码生成 ◆汇编语言代码 优点:目标程序好读、可移植 缺点:需经汇编器辅助代码生成
12.1代码生成概述基本问题p274 ■代码生成器的设计环境 ◆要依赖于目标机器和操作系统 ■输入 ◆源程序的中间表示、符号表中的信息 ■目标程序 ◆汇编语言 ■指令选择 ◆指令集丰富、选择合适 ■寄存器分配 ◆有效合理使用寄存器、提高代码质量 ■计算顺序选择 ◆影响代码的有效性 2025/47 国② 3
2025/4/2 3 12.1 代码生成概述 基本问题 p274 ◼ 代码生成器的设计环境 ◆要依赖于目标机器和操作系统 ◼ 输入 ◆源程序的中间表示、符号表中的信息 ◼ 目标程序 ◆汇编语言 ◼ 指令选择 ◆指令集丰富、选择合适 ◼ 寄存器分配 ◆有效合理使用寄存器、提高代码质量 ◼ 计算顺序选择 ◆影响代码的有效性
目标代码生成器的基本设计要求 ■使所生成的目标代码尽可能的短 ■能较充分地发挥目标计算机可用资源的效率 例如: ◆尽可能地使用执行速度快的指令 ◆充分利用计算机的寄存器和变址器,以节省访问 内存的时间 2025/ 章节目绿国园
2025/4/2 4 目标代码生成器的基本设计要求 ◼ 使所生成的目标代码尽可能的短 ◼ 能较充分地发挥目标计算机可用资源的效率 例如: ◆尽可能地使用执行速度快的指令 ◆充分利用计算机的寄存器和变址器,以节省访问 内存的时间 章节目录
12.2一个简单的代码生成程序目标机模型p278 ■问题提出 ◆代码生成程序总是针对某一具体的计算机实现的 ◆因此,试图脱离具体的计算机来一般性讨论生成高效的 目标代码的全部细节是不合适的,也是不可行的 ◆然而又不可能只局限于某一特定的计算机 ■折中方案 ◆定义一种假想的计算机模型,具有实际计算机的共同特 征 ◆依此模型为依据,讨论代码生成中的某些主要问题 进入下一环节 2025/472 KD 5
2025/4/2 5 12.2 一个简单的代码生成程序 目标机模型 p278 ◼ 问题提出 ◆代码生成程序总是针对某一具体的计算机实现的 ◆因此,试图脱离具体的计算机来一般性讨论生成高效的 目标代码的全部细节是不合适的,也是不可行的 ◆然而又不可能只局限于某一特定的计算机 ◼ 折中方案 ◆定义一种假想的计算机模型,具有实际计算机的共同特 征 ◆依此模型为依据,讨论代码生成中的某些主要问题 进入下一环节