当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

中国科学技术大学:《编译原理与技术》课程教学资源(PPT课件讲稿)第8章 代码生成

资源类别:文库,文档格式:PPT,文档页数:64,文件大小:891KB,团购合买
• 一个简单的代码生成算法 • 涉及存储管理,指令选择,寄存器分配和计算次序选择等基本问题
点击下载完整版文档(PPT)

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

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

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

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

8.1代码生成器的设计中的问题 8.1.1目标程序 ·可重定位目标模块 .L7: testl %eax,%eax je .L3 testl %edx,%edx je .L7 movl %edx,%eax jmp .L7 可重定位目标模块中 .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 可重定位目标模块中, 需要有绿色部分的重定 位信息

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

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

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

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

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

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

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

8.1代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV b RO ADD C, RO MOV RO a MOV a RO ADD e, 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

8.1代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV b. RO ADD C, RO MOV RO MOV a, RO 一一多余的指令 ADD e 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

8.1代码生成器的设计中的问题 语句序列a=b+c d=a+e 的代码如下 MOV RO ADD C, RO MOV RO MOV a, RO 一 多余的指令 ADD e, 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 -- 第三条指令也多余

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共64页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有