- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 目标代码生成
第11章 代 码 生 成
本章内容
• 一个简单的代码生成算法
• 涉及存储管理,指令选择,寄存器分
配和计算次序选择等基本问题
源程序 中间 代 码 中间 代码 目标
前端 代码 优 代码 生成 程序
化 器
器
11.1 代码生成器的设计中的问题
11.1.1 目标程序
• 可执行目标模块
• 可重定位目标模块
– 允许程序模块分别编译
– 调用其它先前编译好的程序模块
• 汇编语言程序
– 免去编译器重复汇编器的工作
– 从教学角度,增加可读性
11.1 代码生成器的设计中的问题
11.1.2 指令的选择
目标机器指令系统的性质决定了指令选择的
难易程度,指令系统的统一性和完备性是
重要的因素
指令的速度和机器特点是另一些重要的因素
11.1 代码生成器的设计中的问题
若不考虑目标程序的效率,指令的选择是直
截了当的。
三地址语句x := y + z (x,y和z都是静态分配)
MOV y, R0 /* 把y装入寄存器R0 */
ADD z, R0 /* z加到R0上 */
MOV R0, x /* 把R0存入x 中 */
11.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
11.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
11.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 -- 多余
11.1 代码生成器的设计中的问题
11.1.3 寄存器分配
运算对象处于寄存器中的指令通常比运算对
象处于内存的指令要短一些,执行也快一些
• 寄存器分配
选择驻留在寄存器中的一组变量
• 寄存器指派
挑选变量要驻留的具体寄存器
11.1 代码生成器的设计中的问题
11.1.4 计算次序的选择
您可能关注的文档
最近下载
- 2023年兰州理工大学公共课《中国近代史纲要》期末试卷A(有答案).docx VIP
- DB32T-地质灾害风险调查与评价规范及编制说明.pdf VIP
- 2025年企业社会责任与稳定风险分析报告.docx
- 重污染天气应急响应“一厂一策”操作方案.pdf VIP
- 学堂在线揭开潜意识心理的奥秘期末考试答案.docx VIP
- GB 5768.4-2017 道路交通标志和标线 第4部分作业区.docx
- 高考古诗文60篇(原文+译文+注释+赏析+情境默写)-2025年北京高考语文一轮复习(原卷版).pdf VIP
- 02S404 防水套管国标规范.pdf VIP
- 新北师大版七年级上册数学全册课件(2024年秋季新版教材).pptx
- HD-2008使用说明书VQ636(完整版).doc VIP
文档评论(0)