- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
尚辅网 / 第6章 代 码 生 成 第6章 代 码 生 成 6.1 代码生成的相关问题 6.2 简单的计算机模型 6.3 简单的代码生成器 6.4 本章小结 6.1 代码生成的相关问题 1.中间代码形式 中间代码有多种形式,其中树与后缀式形式适用于解释器,而对于希望生成目标代码的编译器而言,中间代码多采用与一般机器指令格式相近的三地址码形式。 2.目标代码形式 目标代码的形式可以分为两大类:汇编语言和机器指令。而机器指令又可以根据需求的不同分为绝对机器代码和可再定位机器代码。绝对机器代码的优点是可以立即执行,一般应用于一类称为load-and-go形式的编译模式,即编译完成后立即执行,不形成磁盘形式的目标文件,这种形式特别适合于初学者学习语言的情况。可再定位机器代码的优点是目标代码可以被任意链接并装入内存的任意位置,是编译器最多采用的代码形式。 汇编语言作为一种中间输出形式,便于软件开发人员的测试;load-and-go提供给初学者使用;可再定位机器代码用于真正的软件开发。出于教学的目的,此处选择汇编语言作为目标代码。 3.寄存器的分配 由于寄存器的存取速度远远快于内存,一般情况下,总是希望尽可能多地使用寄存器,而寄存器的个数是有限的,因此,如何分配寄存器的使用,是目标代码生成时需要考虑的重要因素之一。 4.计算次序的选择 代码执行的次序不同,会使代码的运行效率有很大差别,在生成正确目标代码的前提下,优化安排计算次序和适当选择代码序列,也是代码生成需要考虑的重要因素之一。 6.2 简单的计算机模型 1.指令系统与寻址方式 计算机模型的寻址方式如表6.1所示。令X代表Ri或者M,则赋值号右边的(X)表示直接取X内容作为操作对象,((X))表示一层间接,即取X的内容作为地址。可以看出,此模型中的指令与三地址码十分相似。基本寻址方式有直接型、寄存器型和变址型,对应这三种寻址方式,均可以间接寻址。 表 6.1 计算机模型的指令系统与寻址方式 表6.1中op均表示二元运算;若为一元运算,则指令op Ri, M的意义为Ri := op (M),对应三地址码形式为x := op y。 2.特殊指令 除了上述的寻址方式和一般的运算指令之外,计算机模型的指令系统中还包括如表6.2所示的特殊指令,主要有两大类:内存与寄存器交换类,包括LD与ST;比较与转移类,如CMP与J X等。 表 6.2 计算机模型的特殊指令 3.指令的代价 由于各指令中操作对象可以是寄存器,也可以是内存地址,可以是直接寻址,也可以是间接寻址,因此,各条指令的执行时间是不同的。每条指令执行的时间称为指令的代价。假设寄存器的代价为1,内存地址的代价为2,则上述计算机模型的指令代价如表6.3所示。代价并不是一个严格的量化指标,只是可以用它大概估算不同类型指令执行时间的差异,因此也可以采用所谓的相对代价,即令代价最小的指令的相对代价为0,则其它指令代价与其的差就是相对代价的值。 表 6.3 计算机模型的指令代价 例6.1 以下是一个三地址码序列和对应的目标代码序列,它们的相对代价被分别列在指令的右边。 t := a + b LD R1, a 0 t := t * c ADD R1, b 1 t := t / d MUL R1, c 1 DIV R1, d 1 6.3 简单的代码生成器 6.3.1 基本块与程序流图 定义6.1 一段顺序执行的语句序列被称为一个基本块,其中,第一条语句被称为基本块的入口,最后一条语句被称为基本块的出口。 由于基本块中的语句是被顺序执行的,因此基本块的控制流总是从入口进入,从出口退出。任何一个复杂的程序控制流,均可以划分为若干个基本块;极端情况下,一条语句构成一个基本块。因此可以将一段完整的程序表示为一个程序流图。 定义6.2 程序流图(简称流图)是一个有向图,基本块构成图的节点。含有程序的第一条语句的基本块被称为流图的首节点。若在程序控制流中,基本块Bj紧接在基本块Bi之后执行,即控制流从Bi流向Bj,则从Bi到Bj有一条有向边,且称Bi是Bj的前驱节点,Bj是Bi的后继节点。 所谓基本块的划分,实际上就是如何找出程序段中所有顺序执行的子序列。将这些基本块作为流图的节点,并且在基本块划分时记录下控制流的转移,即可得到程序
您可能关注的文档
- 汽车构造与原理上册发动机第2版课件作者蔡兴旺主编第2章节曲柄连杆机构与机体组件.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目九项目九情景三.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目九项目九情景一.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目九项目九项目概述.ppt
- 毕业设计指导课件作者电类高职课件作者董锦凤第1-4章节第2章节.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目六项目六情景二.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目六项目六情景一.ppt
- 毕业设计指导课件作者电类高职课件作者董锦凤第1-4章节第3章节.ppt
- 汽车电气设备维修课件作者郑烨珺6-10项目七项目七情景二.ppt
- 汽车构造与原理上册发动机第2版课件作者蔡兴旺主编第3章节换气系统与换气过程.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第1-5章节第1章节.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第1-5章节第5章节.ppt
- 汽车机械基础课件作者陈红第七章节.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第6章节.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第7章节.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第8章节.ppt
- 汽车电气系统结构与维修图解教程课件作者谭本忠6第六章节电动附件.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第9章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华操作步骤.ppt
- 编译原理基础——习题与上机题解答课件作者刘坚第6-10章节第10章节.ppt
最近下载
- 2025年释放AI时代的潜力报告(英文版).pdf VIP
- 七年级语文第一次月考卷(全解全析)(苏州专用)-A4.docx VIP
- 2025-2030中国军用卫星有效载荷和子系统行业市场发展趋势与前景展望战略研究报告.docx VIP
- 五粮液面试题库及答案.doc VIP
- 2024上海市公务员考试【省直、行测A类、C类、申论A卷】4套真题及答案.doc VIP
- 蒸压加气混凝土砌块薄层砌筑.docx VIP
- 人教版七年级语文上册第二单元测试题及答案.doc VIP
- 16J604 塑料门窗(建筑图集).docx VIP
- 【最新版】人教版七年级上册语文第一单元测试卷(含答案).pdf VIP
- 眭氏源流及宗亲分布.docx VIP
文档评论(0)