第10章(2)代码生成 ■基本问题 ■且标机器模型 ■一个简单的代码生成器 0 寄存器分配(略) ■DAG的目标代码(略) ■作业 2025/4/2 课程目绿因 1/16
2025/4/2 第10章 (2) 代码生成 ◼ 基本问题 ◼ 目标机器模型 ◼ 一个简单的代码生成器 ◼ 寄存器分配(略) ◼ DAG的目标代码(略) ◼ 作业 课程目录 1/16
代码生成概述p279 ■逻辑阶段编译程序的最后一个阶段 ■输入和输出中间代码 等价的目标代码 ■目标代码的一般形式 ◆汇编语言代码 ▣优点:目标程序好读、可移植 0 缺点:需经汇编器辅助代码生成 ■代码生成器的设计环境 ·要依赖于目标机器、指令系统和操作系统。 ■指令选择指令集丰富、选择合适。 ■寄存器分配有效合理使用寄存器、提高代码质量。 ■计算顺序选择影响代码的有效性。 2025/4/2 国) 2/16
2025/4/2 代码生成概述 p279 ◼ 逻辑阶段 编译程序的最后一个阶段 ◼ 输入和输出 中间代码 等价的目标代码 ◼ 目标代码的一般形式 ◆汇编语言代码 优点:目标程序好读、可移植 缺点:需经汇编器辅助代码生成 ◼ 代码生成器的设计环境 ◆ 要依赖于目标机器、指令系统和操作系统。 ◼ 指令选择 指令集丰富、选择合适。 ◼ 寄存器分配 有效合理使用寄存器、提高代码质量。 ◼ 计算顺序选择 影响代码的有效性。 2/16
目标代码生成器的基本设计要求 ■使所生成的目标代码尽可能的短 能较充分地发挥目标计算机可用资 源的效率 例如: ◆尽可能地使用执行速度快的指令 ◆充分利用计算机的寄存器和变址器, 以节省访问内存的时间 2025/4/2 章节目录冈区 3/16
2025/4/2 目标代码生成器的基本设计要求 ◼ 使所生成的目标代码尽可能的短 ◼ 能较充分地发挥目标计算机可用资 源的效率 例如: ◆尽可能地使用执行速度快的指令 ◆充分利用计算机的寄存器和变址器, 以节省访问内存的时间 章节目录 3/16
10.4.1目标机模型假想的计算机模型p280 ■常备指令arc一源操作数dst一目的操作数 指令形式 意义 举例 LD dst,arc (arc)→dst LDR1,B(B)→R1 MOVE LDR1,#11→R1 LDR1,*(4(R0))(Ro)+4)→R1 ST arc,dst (arc)→dst STR1,B(R1)→B ADD dst,arc (dst)+(arc)→dst ADD R1,Ro(R1)+(Ro)→R1 SUB dst,arc (dst)-(arc)→dst SUB R1,T1(R1)-(T)→R1 MUL dst,arc (dst)*(arc)→dst MUL R1,D(R1)*(D)→R1 DIV dst,arc (dst)/(arc)→dst DIV R1,A(R1)/(A)→R 2025/4/2 章节目录国回 4/16
2025/4/2 10.4.1 目标机模型 假想的计算机模型 p280 ◼ 常备指令 arc—源操作数 dst—目的操作数 指令形式 意 义 举 例 LD dst,arc (arc)dst LD R1,B (B)R1 MOVE LD R1,#1 1R1 LD R1,*(4(R0))(((R0)+4))R1 ST arc,dst (arc)dst ST R1,B (R1)B ADD dst,arc (dst)+(arc)dst ADD R1,R0 (R1)+(R0)R1 SUB dst,arc (dst)-(arc)dst SUB R1,T1 (R1)-(T1)R1 MUL dst,arc (dst)*(arc)dst MUL R1,D (R1)*(D)R1 DIV dst,arc (dst)/(arc)dst DIV R1,A (R1)/(A)R1 章节目录 4/16
10.4.2一个简单的代码生成器 概述 寄存器描述和地址描述 ■子 ■简单代码生成算法 2025/4/2 章节目录冈) 5/16
2025/4/2 10.4.2 一个简单的代码生成器 ◼概述 ◼寄存器描述和地址描述 ◼简单代码生成算法 章节目录 5/16