- 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 计算次序的选择
您可能关注的文档
- 经销商优秀活动方案案例集.pdf
- 绘图及仿宋字讲义.pdf
- 给水工程课件(一).pdf
- 结构动力学第6章.pdf
- 绝对挑战-职业测评试题与答案.pdf
- 绝密汽车车灯配光精讲.pdf
- 结构分析-质谱法.pdf
- 绝文!用4000汉字著成的韵文《中华字经》.pdf
- 统一通信与协助-gartner.pdf
- 绝缘检测仪说明书.pdf
- 2023-2028年中国调色系统行业市场深度评估及投资战略规划报告.docx
- 装饰工程项目管理方案.docx
- 2025-2031年中国地下停车场行业市场调查研究及投资策略研究报告.docx
- 2019-2025年中国再生料行业发展趋势预测及投资战略咨询报告.docx
- 2025年中国键盘套装行业市场运营趋势分析及投资潜力研究报告.docx
- 2025年中国REITs行业发展潜力预测及投资战略研究报告.docx
- 中国折叠仰卧板行业发展潜力分析及投资方向研究报告.docx
- 麻醉科有创操作及特殊检查临床规范.docx
- 小学英语课堂中的英语交际能力培养与跨文化沟通研究教学研究课题报告.docx
- 中国加工中心行业市场发展现状及投资规划建议报告.docx
文档评论(0)