- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 12 章 代码生成 ? 代码生成概述 ? 简单的代码生成程序 ? 代码生成程序的开发方法 ? 全局寄存器分配(图着色法) 12.1 代码生成概述 ? 代码生成程序的设计重点:代码生成的质量 (空间 和 时间效率) ? 本章内容 – 简单介绍:代码生成程序的构造方法 – 重点讨论:全局寄存器分配算法 —— 图着 色法(因为执行效率很大程度依赖于寄存 器的使用) 一、代码生成程序在编译系统中的位置 ? 在编译的后端 ? 作用: – 将 中间代码 转换为 目标代码 ? 目标代码的形式: – 能够立即执行的机器语言代码 – 待装配的机器语言模块 – 汇编语言代码 ? 依赖于: 目标机结构、指令系统、操作系统 二、设计代码生成程序的一般问题 1. 代码生成程序的输入 : 中间代码 和 符号表中的信 息 2. 指令的选择 : 寻找一个合适的目标机指令序列 注意:指令集的一致性和完整性;指令速度;机器 用语。 3. 寄存器分配 : 确定在程序的哪个点,将哪些变量或 中间量的值放在寄存器中。 4. 指令调度 : 确定程序指令的执行顺序。 流水线结构中,指令调度是必需的。 二、设计代码生成程序的一般问题 代码生成程序的输入 中间代码 : ? 线性表示法:后缀式 ? 三地址表示法:四元式 ? 抽象机表示法:栈式机器码 ? 图形表示法:语法树 符号表中的信息 : ? 所需存储单元个数 ? 静态数据区域中的相对地址(全局变量) ? 动态数据区域中的相对地址(局部变量) 二、设计代码生成程序的一般问题 指令的选择 :寻找一个合适的目标机指令序列 注意: ? 指令集的一致性和完整性 ? 指令速度 ? 机器用语 基本原则:(冲突时折中考虑) ? 减少产生代码的尺寸 ? 减少目标代码的执行时间 ? 降低目标代码的能耗 二、设计代码生成程序的一般问题 寄存器分配 :确定在程序的哪个点,将哪些值放在寄存器中。 寄存器的使用 : ( 1 )在寄存器分配期间,为程序的某一点选择驻留在寄存器中 的一组变量。 ( 2 )在随后的寄存器指派阶段,挑出变量将要驻留的具体寄存 器。 寄存器分配原则 : ( 1 )生成某变量的目标对象值时,尽量让变量的值或计算结果 保留在寄存器中,直到寄存器不够分配为止。 ( 2 )当到达基本块出口时,将变量的值存放在内存中。 ( 3 )在同一基本块内,后面不再被引用的变量所占用的寄存器 要尽早释放。 寄存器分配方法 : 图着色法 二、设计代码生成程序的一般问题 指令调度 :确定程序指令的执行顺序。(流水线结构中, 指令调度是必需的) ? RISC 体系结构的通用流水线调度限制 :从内存中取入寄存器 中的值在随后的某几个周期中是不能用的。 ? 提高执行效率的方法 :尽可能找出一条或若干条指令(与被 取值无关),在取值指令之后能够立即执行。 ? 举例:参见 P277 表 12.1 12.2 一个简单的代码生成程序 重点讨论 :在一个基本块内如何充分利用寄存 器,以提高目标代码的运行效率。 本节主要内容 : 一、计算机模型 二、待用信息链表法 三、代码生成算法 一、计算机模型 假定一台计算机 ? 具有 n+1 个通用寄存器R0,R1,…,Rn。即可作累加器又可作变址器。 ? 运算器用 op 表示 ? 内存单元用 M 表示 ? 变量所在的内存单元用变量名表示 ? 常量用 C 表示 ? 间址存取用 * 表示 ? 指令形式包含四种类型:间接地址型、寄存器型、变址型、间接 型(参见 P278 表 12.2 ) 二、待用信息链表法 寄存器分配原则之一: ? 在同一基本块内,后面还要被引用的变量值尽可能保存在寄 存器中;后面不再被引用的变量所占用的寄存器要尽早释放 。 为确定后面哪些变量被引用,哪些不被引用,需要确定每个变量的: ? 待用信息 ? 活跃信息 在符号表中设置每个变量的“待用信息”和“活跃信息”的栏目,计 算方法参见 P279 。 ? 举例参见 P279-280 三、代码生成算法 分配操作存储器 R:GETTEG(i: A := B op C) 取 B 和 C 现行值存放的位置 B' 和 C' B'=A V ALUE[B] C'=A V ALUE[C] 生成目标码 OP R,C' 生成目标码 LD R,B'
您可能关注的文档
- 人地关系原理及土地的供给与需求总结.ppt
- 人工全髋关节置换申报解答.ppt
- 人工智能-机器视觉.ppt
- 人口的空间变化模板.ppt
- 人因工程学王雁色彩环境.ppt
- 人工费用的核算选读.ppt
- 人工智能计算机导论总结.ppt
- 人民币汇率持续上涨外汇黄牛重现银行网点讲义.ppt
- 人民币汇率的过去现在与未来.ppt
- 人民教育家——陶行知.ppt
- 2024年河南省驻马店市泌阳县中考物理一模试卷.docx
- 福建省福州第十九中学2023-2024学年九年级下学期开学考试物理试题.docx
- 2023年西藏自治区日喀则市昂仁县中考二模数学模拟试题.docx
- 2024年贵州省黔东南州中考物理模拟试卷(一).docx
- 2022年湖北省黄冈市中考模拟联考物理试题.docx
- 山东省枣庄市滕州市北辛街道北辛中学2023-2024学年八年级上学期第二次月考数学试题.docx
- 辽宁省盘锦市双台子区实验中学2023-2024学年九年级上学期第三次月考数学试题.docx
- 2024年安徽省阜阳市太和县中考一模物理试题.docx
- 江苏省盐城市明达初级中学2022-2023学年九年级下学期第一次月月考数学试题.docx
- 山东省威海乳山市(五四制)2023-2024学年七年级上学期期末考试数学试题.docx
1亿VIP精品文档
相关文档
最近下载
- 广西合浦倒大岭头石膏矿区资源储量核实报告(文).doc
- 部编版六年级下册语文全册复习课件.pptx
- 机电一体化专业毕业论文.docx
- 信号与系统(西南交通大学)中国大学MOOC慕课章节测验答案(课程ID:1459931161).pdf
- 2022义务教育语文课程标准(2022版)解读培训学习课件.pdf
- 精品解析:江苏省苏州市2022-2023学年高二下学期期末学业质量调研考试生物试题(解析版).docx VIP
- 如何玩转抖音本地生活.pptx
- 农村生活污水在线监控设备及智慧监管平台建设方案.docx
- 2024年云南省高等职业技术教育招生考旅游类(技能考核)模拟卷〔B1〕.docx VIP
- 电机现代测试技术结 课 报 告.docx VIP
文档评论(0)