- 3
- 0
- 约9.93千字
- 约 27页
- 2018-01-15 发布于浙江
- 举报
软件工程专业本科课程
编 译 原 理
Compilers Principles
长安大学信息工程学院计算机系
主讲:李 鹏
第八章 代码生成
本章内容
• 一个简单的代码生成算法
• 涉及存储管理,指令选择,寄存器分配和计算
次序选择等基本问题
源程序 中间代码 代码 中间代码 代码 目标程序
前端 生成
优化器
器
2
8.1 代码生成器设计中的问题
代码生成器的输入
代码生成器的输入是由前端生成的源程序的中间
表示形式以及符号表中的信息组成。
中间表示(IR )的表达形式可以有多种选择。
8.1 代码生成器设计中的问题 3
目标程序
机器代码的代码生成器受目标机器的指令体系结构影响
非常大。
• 可执行目标模块
• 可重定位目标模块
允许程序模块分别编译
调用其它先前编译好的程序模块
• 汇编语言程序
8.1 代码生成器设计中的问题 4
指令选择
目标机器指令系统的性质决定了指令选择的难易
程度,指令系统的统一性和完备性是重要的因素。
指令的速度和机器特点是另一些重要的因素。
8.1 代码生成器设计中的问题 5
若不考虑目标程序的效率,指令的选择很简单。
三地址语句x = y + z (x,y和z都是静态分配)
LD R0, y /* 把y装入寄存器R0 */
ADD R0, R0, z /* z加到R0上*/
ST x, R0 /* 把R0存入x 中*/
逐个语句地产生代码,常常得到低质量的代码
8.1 代码生成器设计中的问题 6
语句序列 a = b + c
d = a + e
的代码如下 多余的指令。若a
LD R0, b 不再使用,第三条
ADD R0, R0, c 也多余。
ST a, R0
LD R0, a
ADD R0, R0, e
ST d, R0
8.1 代码生成器设计中的问题 7
寄存器分配
运算对象处于寄存器中的指令通常比运算对象
处于内存的指令要短一些,执行也快一些。
• 寄存器分配
选择驻留在寄存器中的一组变量
• 寄存器指派
挑选变量要驻留的具体寄存器
8.1 代码生
您可能关注的文档
- 医学细胞生物学(中山大学)第二章 细胞的概念和分子基础(附习题).docx
- 医学细胞生物学(中山大学)第五章 细胞的内膜系统与囊泡运输.docx
- 医学细胞生物学(中山大学)12 信号转导-五年制.pptx
- 医学细胞生物学(中山大学)柯琼 核糖体-20141027.pptx
- 医学细胞生物学(中山大学)柯琼 第6章细胞骨架与细胞运动-20150408.pptx
- 医学英语教学(盛淑芳)Introduction.ppt
- 医学英语教学(盛淑芳)Unit 1.ppt
- 医学细胞生物学(中山大学)细胞分化-五年制.ppt
- 医学英语教学(盛淑芳)unit 3.ppt
- 医学细胞生物学(中山大学)上课课件 5细胞的内膜系统与囊泡转运.ppt
最近下载
- 2025年陕西省中考数学真题试卷含答案.pdf VIP
- 一年级英语寒假作业.pdf VIP
- 微生物技术 走进微生物世界 微生物技术—走进微生物世界.pptx VIP
- 《植物组织培养》课程教学大纲(本科).pdf VIP
- 2025年重庆市公务员省考《行测》联考真题(含答案).pdf VIP
- 2026年一年级英语【寒假作业】.docx VIP
- 抽象函数的单调性.doc VIP
- 2025年重庆市公务员考试行测真题及答案详解(最新).docx VIP
- 2025年特许金融分析师私募股权投资中的公司尽职调查专题试卷及解析.pdf VIP
- 2025年金融风险管理师久期与债券流动性风险的交互影响专题试卷及解析.pdf VIP
原创力文档

文档评论(0)