目标代码生成编译原理考点bianyi.pptx

目标代码生成编译原理考点bianyi.pptx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

§8目标代码生成学时:6知识点:涉及的问题基本块、程序流图下次引用信息代码生成算法

@李文生制作,2§8目标代码生成目标代码生成程序的任务将前端产生的中间代码转换为等价的目标代码对目标代码生成器的要求:正确高质量1.有效地利用目标机器的资源2.所生成的目标代码应高效地运行本章目标:介绍一个简单的代码生成器算法

@李文生制作,3本章主要内容8.1代码生成器设计中的问题8.2目标机器8.3基本块和流图8.4下次引用信息8.5简单的代码生成器小结作业

@李文生制作,48.1代码生成器设计中的问题代码生成器的具体细节依赖于目标机器和操作系统所有的代码生成器固有的问题代码生成器的输入代码生成器的输出存储管理指令选择寄存器分配计算顺序选择代码生成器的设计

@李文生制作,5一、代码生成器的输入中间代码经过语法分析、语义检查之后得到的正确的符号表记录了与名字有关的信息决定中间表示中的名字所代表的数据对象的运行地址假定:前期工作结果正确、可信中间代码足够详细必要的类型转换符已正确插入明显的语义错误已经发现、且正确恢复

@李文生制作,6二、代码生成器的输出目标代码形式绝对机器代码可把代码放在内存中固定的地方、立即执行可重定位机器代码.obj(DOS)、.o(UNIX)开发灵活,允许各子模块单独编译由连接装配程序将它们连接在一起,生成可执行文件汇编代码

@李文生制作,7三、存储管理从名字到存储单元的转换由前端和代码生成器共同完成三地址代码中的名字指向该名字在符号表中位置的指针符号表中的信息在处理声明语句时填入“类型”决定了它的域宽“地址”确定该名字在过程的数据区域中的相对位置上述信息用于确定中间代码中的名字对应的数据对象在运行时的地址

@李文生制作,8例如:中间代码与目标代码的对应对于四元式j:gotoiijij目标代码...0n四元式100的机器码四元式地址长度...100(,,,)101(,,,)102(,,,)103(,,,)...n1212n+12n+12四元式101的机器码88n+20n+20四元式102的机器码1616n+36n+36四元式103的机器码44n+40...将四元式j的地址记入与i相关的链表中,等待回填四元式i的地址已有,可以直接生成机器指令

@李文生制作,9四、指令选择机器指令系统的性质决定了指令选择的难易程度一致性完整性指令的执行速度机器的特点对每一类三地址语句,可以设计它的代码框架如:x:=y+z的代码框架可以是:MOVy,R0ADDz,R0MOVR0,xa:=b+cd:=a+ea:=a+1MOVb,R0ADDc,R0MOVR0,aMOVa,R0ADDe,R0MOVR0,dMOVa,R0ADD#1,R0MOVR0,aINCa

@李文生制作,10五、寄存器分配要尽量使用寄存器考虑的两个问题选出程序在某一点上要使用的寄存器的变量;寄存器的指派算法的复杂性最优很困难,有许多因素需要考虑有些寄存器有专门的用法(栈指针寄存器、变址、基址寄存器)有些寄存器直接被某些指令用来表示结果重要原则生成某变量的目标对象值时,尽量让变量的值或计算的结果留在寄存器中,直到寄存器不够分配为止。

@李文生制作,11六、计算顺序的选择计算顺序影响目标代码的效率例RISC体系的一种通用的流水线的限制是,从内存中取出存入寄存器的值在随后的几个周期内是不能用的。在这几个周期内,可以调出不依赖于该寄存器的指令来执行,如果找不到这样的指令,这些周期就会被浪费。有些执行顺序可以用较少的寄存器来保留中间结果。七、代码生成器的设计原则能够正确地生成代码易于实现、便于测试和维护

@李文生制作,128.2目标机器设计代码生成器的必要条件:熟悉目标机器一般信息编址方式:按字节编址每个字有4个字节寄存器:n个通用寄存器:R0、R1、Rn-1指令形式:OPS,D其中OP:MOV、ADD、SUBS:源操作数D:目的操作数

@李文生制作,13寻址方式地址形式汇编方式地址占用存储空间绝对地址MM1寄存器RR

文档评论(0)

187****4471 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档