《编译原理》课程教学课件(PPT讲稿)第10章 代码优化和目标代码生成-2目标代码生成

第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

概述 p283 ■算法策略 ◆依次把每条中间代码变换成目标代码 ·在一个基本块范围内充分利用寄存器 ■如何充分利用寄存器一做到 ◆尽可能地让变量(存结果)的值保留在寄存器中 ·尽可能引用变量(操作数)在寄存器中的值,直到 该寄存器必须用来存放别的变量值或者已到达基本 块出口为止 ■为了生成高效的目标代码,充分利用寄存器, 代码生成器需要了解如下信息 ◆哪些变量以后还会被引用—待用信息 ◆变量的值当前在何处一寄存器描述和地址描述 2025/4/2 国 6/16
2025/4/2 概述 p283 ◼ 算法策略 ◆ 依次把每条中间代码变换成目标代码 ◆ 在一个基本块范围内充分利用寄存器 ◼ 如何充分利用寄存器——做到 ◆ 尽可能地让变量(存结果)的值保留在寄存器中 ◆ 尽可能引用变量(操作数)在寄存器中的值,直到 该寄存器必须用来存放别的变量值或者已到达基本 块出口为止 ◼ 为了生成高效的目标代码,充分利用寄存器, 代码生成器需要了解如下信息 ◆ 哪些变量以后还会被引用——待用信息 ◆ 变量的值当前在何处——寄存器描述和地址描述 6/16

目 三地址代码 目标代码 寄存器描述 地址描述 标 (1)T1:=A+B LD Ro,A 代 Ro空闲 ADD Ro,B Ro含T1 T1在R0 2T2:=T1-C LD R1 Ro Ro含T1lRo,R1 T1在Ro R1空闲 生 SUB R1,C R1含T2均非空 T2在R1 (3)T3:=D+E ST Ro T1 R0T1存入内存 T1在T1 Ro 举 LD Ro,D R1含T2 T2在R1T2以后 T1最远用到 ADD Ro,E Ro含T3 不用 例 T3在R (4)T3:T2*T3R1 MUL R1,Ro R1含T3 T3在RT1在T1 (5)T4:红4T3 LD Ro,T1 R1含T3 T3在R1T3以后 RoT1存入R0 ADD Ro,R1 R0含T4 T4在R0不用 (6)T5:=T3-ER1 SUB R1,E R1含T5R0含T4 T5在R1T4在R0 (7)F:=T4*T5 MUL Ro,Ri T4以后 RoF存内存 ST Ro,F Ro含F F在RO,F 不用 假设只有R0,R1两个寄存器可用,出口处只有F活跃 2025/4/2 节目录国 7/16
2025/4/2 目 标 代 码 生 成 举 例 三地址代码 (1)T1:=A+B (2)T2:=T1-C (3)T3:=D+E (4)T3:=T2*T3 (5)T4:=T1+T3 (6)T5:=T3-E (7)F:=T4*T5 目标代码 寄存器描述 地址描述 假设只有R0 ,R1两个寄存器可用 R0空闲 LD R0 ,A ADD R0 ,B R0含T1 T1在R0 R1空闲 LD R1 ,R0 SUB R1 ,C R0含T1 R1含T2 T1在R0 T2在R1 R0,R1 均非空 R0 T1最远用到 ST R0 ,T1 R0 T1存入内存 LD R0 ,D ADD R0 ,E R1含T2 R0含T3 T1在T1 T2在R1 T3在R0 T2以后 不用 R1 MUL R1 ,R0 R1含T3 T3在R1 T1在T1 R0 LD R0 ,T1 ADD R0 ,R1 R1含T3 R0含T4 T3在R1 T4在R0 R1 SUB R1 ,E R1含T5 R0含T4 T5在R1 T4在R0 T3以后 T1存入R0 不用 T4以后 R0 不用 MUL R0 ,R1 ,出口处只有F活跃 F存内存 ST R0,F R0含F F在R0,F 节目录 7/16

寄存器描述 p283 寄存器描述 ◆目的 动态地记录各寄存器分配信息 ◆内容描述每个寄存器当前的状况 空闲 已分配某个变量 已分配给某些变量 ◆数据结构 数组 Ro R1 R7 RVALUE 空闲 B D,Ti 举例 ◆RVALUE[Ro]={} 寄存器Ro空闲 ◆RVALUE[R]={B}—R1中持有B的值 ◆RVALUE[R]={D,T1}—R7中持有D,T1的值 2025/4/2 D 8/16
2025/4/2 寄存器描述 p283 ◼ 寄存器描述 ◆目的 动态地记录各寄存器分配信息 ◆内容 描述每个寄存器当前的状况 空闲 已分配某个变量 已分配给某些变量 ◆数据结构 数组 RVALUE . R0 R1 . R7 ◼ 举例 ◆RVALUE[R0]={ }——寄存器R0空闲 空闲 ◆RVALUE[R1]={B}——R1中持有B的值 B ◆RVALUE[R7]={D,T1}——R7中持有D,T1的值 D,T1 8/16

地址描述 p283 ■地址描述 ◆目的动态地记录各变量现行值的存放位置 ◆内容描述每个变量现行值所在位置状况 ▣只在寄存器只在内存 同时在寄存器和内存 ◆数据结构 数组 B C Ti AVALUE R1 . R7,T1 ■举例 0 AVALUE[B]={R1}—变量B的值在寄存器R1中 0 AVALUE[C]={C}—变量C的值在内存单元C中 AVALUE[T1]=(R7,T1}- 变量T的值在寄存器R7 和内存单元T1中 2025/4/2 <D 9116
2025/4/2 地址描述 p283 ◼ 地址描述 ◆目的 动态地记录各变量现行值的存放位置 ◆内容 描述每个变量现行值所在位置状况 只在寄存器 只在内存 同时在寄存器和内存 ◆数据结构 数组 AVALUE . B C . T1 ◼ 举例 AVALUE[B]={R1}——变量B的值在寄存器R1中 R1 AVALUE[C]={C}——变量C的值在内存单元C中 C AVALUE[T1]={R7,T1}——变量T1的值在寄存器R7 和内存单元T1中 R7,T1 9/16

函数getreg(i:A:=BopC)p284 飞存结 自 参数待翻译的中间代码i:A:=BopC ■于 功能给出一个用来存放A的当前值的寄存器R ■算法 ◆(I)若RVALUE[R]={B},即B的现行值在某寄存器中, 且B=A或B在1后不活跃,则令R=R1,并转(4) ◆(2)否则,若RVALUE[R:]={},则令R=R,并转(4) ◆(3)否则,选一个已用R,最好使R中变量满足: 加占用该寄存器的变量值同时也在内存单元中 或者,在块中要最远引用或不会引用 则令R=R1,然后修改相应的寄存器和地址描述符 2025/4/2 210/16
2025/4/2 函数getreg(i:A:=B op C)p284 ◼ 参数 待翻译的中间代码 i:A:=B op C ◼ 功能 给出一个用来存放A的当前值的寄存器R 存结 果 ◼ 算法 ◆(1)若RVALUE[Ri]={B},即B的现行值在某寄存器中, 且B=A或B在i后不活跃,则令R=Ri,并转(4) ◆(2)否则,若RVALUE[Ri]={ },则令R=Ri,并转(4) ◆(3)否则,选一个已用Ri,最好使Ri中变量满足: 占用该寄存器的变量值同时也在内存单元中 或者,在块中要最远引用或不会引用 则令R=Ri,然后修改相应的寄存器和地址描述符 10/16
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《编译原理》课程教学课件(PPT讲稿)第一章 绪论 Principles of Compiler.ppt
- 《编译原理》课程教学课件(PPT讲稿)第二章 文法与语言.ppt
- 《编译原理》课程教学课件(PPT讲稿)chap 3 词法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)chp4 自顶向下语法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)chp5 自底向上优先分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)chp 6 LR分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)chap7 语法制导翻译和中间代码生成.ppt
- 《编译原理》课程教学课件(PPT讲稿)chap8 运行时存储空间组织与管理.ppt
- 《编译原理》课程教学课件(PPT讲稿)chap9 优化.ppt
- 《编译原理》课程教学课件(PPT讲稿)chap10 目标代码生成.ppt
- 《C语言》课程教学资源(复习资料)二级C语言选择题题库参考(带答案版).doc
- 《C语言》课程教学资源(复习资料)计算机二级C语言上机题库100套参考(含答案).doc
- 《C语言》课程教学资源_二级C语言复习资料_二级公共基础知识参考资料课件.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C1.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C2.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C3.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C4.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C5-1.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C5-2.ppt
- 《C语言》课程教学课件(PPT讲稿,课堂课件)C6.ppt
- 《编译原理》课程教学课件(PPT讲稿)第10章 代码优化和目标代码生成-1代码优化.ppt
- 《编译原理》课程教学课件(PPT讲稿)第9章 运行时存储组织.ppt
- 《编译原理》课程教学课件(PPT讲稿)第7-8章语法制导、静态语义分析和中间代码生产.ppt
- 《编译原理》课程教学课件(PPT讲稿)第五章 自底向上优先分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)第一章 引论 Principles of Compiler.ppt
- 《编译原理》课程教学课件(PPT讲稿)第二章 文法与语言.ppt
- 《编译原理》课程教学课件(PPT讲稿)第三章 词法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)运行时存储空间组织.ppt
- 《编译原理》课程教学课件(PPT讲稿)第一章引言.ppt
- 《编译原理》课程教学资源(习题答案)编译原理习题答案,第二版,清华.pdf
- 《编译原理》课程教学课件(PPT讲稿,2018)cha10_2 代码生成 讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha10_1 代码优化 讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha7-8 语法制导翻译和中间代码生成 修订增加继承属性简介.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha6 LR分析 修订教材页码.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha5 自底而上语法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha4 自顶向下语法分析方法.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha3 词法分析 阅读.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha3 词法分析 修订 讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha2_2 文法和语言_短语直接短语句柄——讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha2_1 文法和语言——讲授 修订.ppt
