下载此文档

《目标代码生成》.ppt


文档分类:IT计算机 | 页数:约41页 举报非法文档有奖
1/41
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/41 下载此文档
文档列表 文档介绍
该【《目标代码生成》 】是由【相惜】上传分享,文档一共【41】页,该文档可以免费在线阅读,需要了解更多关于【《目标代码生成》 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。*汇编指令到机器代码的翻译概述概述目标代码生成: 目标代码生成就是将中间代码程序转换成等价的目标代码程序,完成这一功能的程序称为目标代码生成器。代码生成器:目标代码的常见形式 (1)可立即执行的机器语言代码。(.exe或) (2)待装配的机器语言模块。(.obj或lib) (3)汇编语言程序生成目标代码的过程中要注意考虑的问题: (1)生成的目标代码较短 (2):特点: 生成器依次把每条中间代码变换成目标代码,在一个根本块范围内考虑如何充分利用存放器的问题。一方面生成计算某变量值的目标代码时,尽可能地让该变量的值保存在存放器中,直到该存放器必须用来存放其它变量的值或已达根本块出口为止;另一方面,后续的目标代码尽可能地引用变量在存放器中的值而不访问内存。低效的代码生成器:不考虑代码的效率,可以简单地把每条中间代码(四元式)映射成假设干条目标指令例如,一C语言语句为A=(B+C)*D+E,把它翻译为四元式G:T1=B+CT2=T1*DA=T2+E 代码生成器将形如x=y+z的三地址代码映射为:MOVAX,y/*AX为存放器*/ADDAX,zMOVx,AX这样,上述四元式代码序列G就可翻译为:(1)MOVAX,B(2)ADDAX,C(3)MOVT1,AX(4)MOVAX,T1(5)MULAX,D(6)MOVT2,AX(7)MOVAX,T2(8)ADDAX,E(9)MOVA,AX(4)和(7)两条指令是多余的;T1、T2是中间代码生成时产生的临时变量,它们在出了根本块后将不再使用,故(3)、(6)两条指令也可删去。高效的代码生成器:考虑效率和充分使用存放器,生成如下代码:(1)MOVAX,B(2)ADDAX,C(3)MULAX,D(4)ADDAX,E(5)MOVA,AX?,为了提高存放器的使用效率,应将根本块内还要被引用的值尽可能地保存在存放器中,而将根本块内不再被引用的变量所占用的存放器尽早释放。待用信息:为了将根本块内还要被引用的值尽可能地保存在存放器中,需要收集变量的待用信息。 四元式i:A=BopC 四元式j:X=YopA 四元式i对变量A定值,i后面的四元式j要引用A且从i到j的四元式没有其它对A的定值点,那么称j是四元式i中对变量A的待用信息活泼信息:为了将不再被引用的变量所占用的存放器尽早释放,需要收集变量的活泼信息。 上例中如在i之后A被不再被引用,那么称A为非活泼的,否那么称A在i是活泼的;如果A被多处引用,那么构成了A的待用信息链与活泼信息链。取得每个变量在根本块内的待用信息和活泼信息算法:从根本块的出口由后向前扫描,对每个变量建立相应的待用信息链与活泼信息链。根本块中的临时变量看作根本块出口之后的非活泼变量,而所有的非临时变量均看作根本块出口之后的活泼变量。如果某些临时变量能够跨根本块使用,那么把这些临时变量也看成根本块出口之后的活泼变量。假设变量的符号表内有待用信息和活泼信息栏,那么计算变量待用信息的算法如下:(1)将根本块中各变量的符号表的待用信息栏置为“非待用〞,对活泼信息栏那么根据该变量在根本块出口之后是否活泼而将该栏中的信息置为“活泼〞或“非活泼〞。(2)从根本块出口到根本块入口由后向前依次处理各四元式。对每个四元式i:A=BopC依次执行以下步骤:①把符号表中变量A的待用信息和活泼信息附加到四元式i上;②把符号表中变量A的待用信息和活泼信息分别置为“非待用〞和“非活泼〞;③把符号表中变量B和C的待用信息和活泼信息附加到四元式i上;?④把符号表中B和C的待用信息置为i,活泼信息置为“活泼〞。:(1)T=A?B(2)U=A?C(3)V=T+U(4)D=V+U其中,A、B、C、D为变量,T、U、V为中间变量,试求各变量的待用信息链和活泼信息链。

《目标代码生成》 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数41
  • 收藏数0 收藏
  • 顶次数0
  • 上传人相惜
  • 文件大小2.52 MB
  • 时间2024-04-14
最近更新