《编译原理》课程教学资源(PPT课件讲稿)第八章 代码生成

第八章代码生成 中间代码中间代码 源程序一前端代码优化}生成,目标 程序 器 器 本章内容 个简单的代码生成算法 涉及存储管理,指令选择,寄存器分配和计 算次序选择等基本问题
第八章 代 码 生 成 本章内容 • 一个简单的代码生成算法 • 涉及存储管理,指令选择,寄存器分配和计 算次序选择等基本问题 前端 代 码 优 化 器 中间 代码 源程序 代码 生成 器 中间 代码 目标 程序

81代码生成器的设计中的问题 81.1目标程序 绝对机器语言程序 目标程序将装入到内存的固定地方 粗略地说,相当于现在的可执行目标模块(第11 章介绍) 可重定位目标模块 代码中含重定位信息,以适应重定位要求
8.1 代码生成器的设计中的问题 8.1.1 目标程序 • 绝对机器语言程序 –目标程序将装入到内存的固定地方 –粗略地说,相当于现在的可执行目标模块(第11 章介绍) • 可重定位目标模块 –代码中含重定位信息,以适应重定位要求

81代码生成器的设计中的问题 81.1目标程序 可重定位目标模块 L7: testl %eax %eax Je.L3 testl edx. edx je. L7 movl %edx % eax jmpL7 L3: 可重定位目标模块中, leave 需要有绿色部分的重定 ret 位信息
8.1 代码生成器的设计中的问题 8.1.1 目标程序 • 可重定位目标模块 .L7: testl %eax,%eax je .L3 testl %edx,%edx je .L7 movl %edx,%eax jmp .L7 .L3: leave ret 可重定位目标模块中, 需要有绿色部分的重定 位信息

81代码生成器的设计中的问题 81.1目标程序 绝对机器语言程序 目标程序将装入到内存的固定地方 粗略地说,相当于现在的可执行目标模块(第11 章介绍) 可重定位目标模块 代码中含重定位信息,以适应重定位要求 允许程序模块分别编译 调用其它先前编译好的程序模块
8.1 代码生成器的设计中的问题 8.1.1 目标程序 • 绝对机器语言程序 –目标程序将装入到内存的固定地方 –粗略地说,相当于现在的可执行目标模块(第11 章介绍) • 可重定位目标模块 –代码中含重定位信息,以适应重定位要求 –允许程序模块分别编译 –调用其它先前编译好的程序模块

81代码生成器的设计中的问题 81.1目标程序 绝对机器语言程序 可重定位目标模块 代码中含重定位信息,以适应重定位要求 允许程序模块分别编译 调用其它先前编译好的程序模块 汇编语言程序 免去编译器重复汇编器的工作 从教学角度,增加可读性
8.1 代码生成器的设计中的问题 8.1.1 目标程序 • 绝对机器语言程序 • 可重定位目标模块 –代码中含重定位信息,以适应重定位要求 –允许程序模块分别编译 –调用其它先前编译好的程序模块 • 汇编语言程序 –免去编译器重复汇编器的工作 –从教学角度,增加可读性

81代码生成器的设计中的问题 812指令的选择 目标机器指令系统的性质决定了指令选择的 难易程度,指令系统的统一性和完备性是重 要的因素 指令的速度和机器特点是另一些重要的因素
8.1 代码生成器的设计中的问题 8.1.2 指令的选择 • 目标机器指令系统的性质决定了指令选择的 难易程度,指令系统的统一性和完备性是重 要的因素 • 指令的速度和机器特点是另一些重要的因素

81代码生成器的设计中的问题 若不考虑目标程序的效率,指令的选择是直 截了当的 例三地址语句x=y+z(x,y和z都静态分配) MOVy,R0/把y装入寄存器R0*/ ADDz,R0/*把z加到R0上* MOVR0,x/*把R0存入x中* 逐条语句地产生代码,常常得到低质量的代码
8.1 代码生成器的设计中的问题 • 若不考虑目标程序的效率,指令的选择是直 截了当的 • 例 三地址语句x = y + z (x,y和z都静态分配) MOV y, R0 / 把y装入寄存器R0 / ADD z, R0 / 把z加到R0上 / MOV R0, x / 把R0存入x中 / 逐条语句地产生代码,常常得到低质量的代码

81代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV b. RO ADD RO MOV RO. a Mov a. RO ADD . RO MOV rO. d
8.1 代码生成器的设计中的问题 语句序列 a = b + c d = a + e 的代码如下 MOV b, R0 ADD c, R0 MOV R0, a MOV a, R0 ADD e, R0 MOV R0, d

81代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV b. RO ADD RO MOV RO. a MOV a RO 多余的指令 ADD RO MOV rO. d
8.1 代码生成器的设计中的问题 语句序列 a = b + c d = a + e 的代码如下 MOV b, R0 ADD c, R0 MOV R0, a MOV a, R0 -- 多余的指令 ADD e, R0 MOV R0, d

81代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV b. RO ADD RO MOV RO. a MOV a RO 多余的指令 ADD RO 若a不再使用, MOV rO. d 第三条指令也多余
8.1 代码生成器的设计中的问题 语句序列 a = b + c d = a + e 的代码如下 MOV b, R0 ADD c, R0 MOV R0, a MOV a, R0 -- 多余的指令 ADD e, R0 -- 若a不再使用, MOV R0, d -- 第三条指令也多余
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数字图像处理》课程PPT教学课件(讲稿)第四章 点运算.ppt
- 《计算机系统安全》课程教学资源(PPT课件讲稿)第七章 公开密钥设施PKI Public key infrastructure.ppt
- 《密码学》课程教学资源(PPT课件讲稿)第10章 密码学的新方向.ppt
- 清华大学:Local Area Network and Ethernet(PPT课件讲稿).pptx
- 《计算机组成与设计》课程教学资源(PPT课件讲稿)第2章 指令——计算机的语言.ppt
- 《数据挖掘导论 Introduction to Data Mining》课程教学资源(PPT课件讲稿)Data Mining Classification(Basic Concepts, Decision Trees, and Model Evaluation).ppt
- 《微型计算机原理及接口技术》课程电子教案(PPT课件)第9章 AT89S52单片机的I/O扩展.ppt
- 四川大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)Unit5 Introduction to Computer Networks.ppt
- 《计算机软件技术基础》课程教学资源(PPT课件讲稿)排序(教师:曾晓东).ppt
- 西安电子科技大学:《数据库系统 DataBase System》课程教学资源(PPT课件讲稿)normalization.ppt
- 《单片机原理及应用》课程教学资源(PPT课件讲稿)第11章 单片机应用系统的串行扩展.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第7章 多处理器及线程级并行 7.1 引言 7.2 集中式共享存储器体系结构.pptx
- 上海交通大学:操作系统安全(PPT课件讲稿)设备管理与I/O系统.pps
- 《编辑原理》课程教学资源(PPT课件)目标代码生成.pptx
- 四川大学:Object-Oriented Design and Programming(Java,PPT课件)3.2 Graphical User Interface.ppt
- 《计算机系统结构》课程教学资源(PPT课件讲稿)第三章 流水线技术.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)异常处理 Exception Handling.ppt
- 中国科学技术大学:云计算基本概念、关键技术、应用领域及发展趋势.pptx
- 《C程序设计》课程电子教案(PPT课件讲稿)第二章 基本数据类型及运算.ppt
- 《电子商务概论》课程教学资源(PPT课件)第十章 电子商务安全技术.ppt
- Introduction to Convolution Neural Networks(CNN)and systems.pptx
- 华北科技学院:数字视频教学软件与制作(PPT课件讲稿)数字视频编辑软件Premiere 6.5(主讲:于文华).ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)文件系统.ppt
- 哈尔滨工业大学:再探深度学习词向量表示(PPT课件讲稿)Advanced word vector representations(主讲人:李泽魁).ppt
- 《Visual Basic程序设计》课程教学资源(PPT课件讲稿)第四章 VB的基本语句.pps
- 《单片机原理及应用》课程PPT教学课件(C语言版)第4章 C51程序设计入门(单片机C语言及程序设计).ppt
- 西安培华学院:《微机原理》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 《数据结构与算法》课程教学资源(PPT课件讲稿)第三章 树 3.1 树的有关定义.ppt
- 《计算机网络》课程教学资源(考试大纲)计算机网络考试大纲.doc
- 西安电子科技大学:《Mobile Programming》课程PPT教学课件(Android Programming)Lecture 2 Intro to Java Programming.pptx
- 西安电子科技大学:《数据库系统 DataBase System》课程教学资源(PPT课件讲稿)Unit 2 The Relational Model.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第6章 用数组处理批量数据.pptx
- 电子工业出版社:《计算机网络》课程教学资源(第六版,PPT课件讲稿)第六章 应用层.pptx
- 清华大学:《计算机导论》课程电子教案(PPT教学课件)第3章 计算机基础知识.ppt
- 中国科学技术大学:《现代密码学理论与实践》课程教学资源(PPT课件讲稿)第4章 有限域(第五版).pptx
- 西安电子科技大学:《数据库系统 DataBase System》课程教学资源(PPT课件讲稿)Unit 3 SQL.ppt
- 《人工智能技术导论》课程教学资源(PPT课件讲稿)第2章 逻辑程序设计语言.ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第六章 查找.ppt
- 上海交通大学:云安全(PPT讲稿)Cloud Security.pptx
- 《计算机网络》课程教学大纲(适用专业:信息与计算科学).pdf