第十一章 目标代码生成.ppt_第1页
第十一章 目标代码生成.ppt_第2页
第十一章 目标代码生成.ppt_第3页
第十一章 目标代码生成.ppt_第4页
第十一章 目标代码生成.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一章目标代码生成 代码生成器的位置 目标代码一般有以下三种形式 1 能独立执行的机器语言代码 所有地址均已定位 2 待装配的机器语言模块 当需要执行时 由连接装入程序把它们和某些运行程序连接起来 转换成能执行的机器语言代码 3 汇编语言代码 尚须经过汇编程序汇编 转换成可执行的机器代码 代码生成器着重考虑两个问题 如何使生成的目标代码较短 是如何充分利用计算机的寄存器 减少目标代码中访问存储单元的次数 这两个问题直接影响代码的执行速度 基本问题 代码生成器的输入目标程序选择适当的代码指令寄存器分配方案计算顺序 例 考察下面中间代码序列G1 T1 A BT2 A BF T1 T2T1 A BT2 A CT3 B CT1 T1 T2G T1 T3 对应的DAG如图 上图的DAG含有7个结点 我们应用课本中的算法 把它们排序 主要步骤如下 第一步置初值 i 7 T的所有元素全为空null 内部结点n3和n7均满足第三步的要求 假定我们选取T 7 为结点n3 结点n3的最左子结点 内部 n1满足第5步的要求 因此按第6步 T 6 n1 但n1的最左子结A为叶结 不满足第6步的要求 则现在只有n7满足第3步要求 于是T 5 n7 结点n7的最左子结n6满足第5步的要求 因此T 4 n6 结点n6的最左子结点n2同样满足第5步的要求 因此T 3 n2 余下的满足第3步要求的尚有n4和n5 假定选取T 2 n4 当把n5列为T 1 后 算法工作结束 至此 我们求出的图的内结点顺序为 n5 n4 n2 n6 n1 n3 按这个次序从新表示中间代码序列为G1 为 T3 B C T2 A C S1 A B T1 S1 T2 G T1 T3 S2 A B F S2 S1 如前所述按后一个中间代码序列生成中间代码将会较优 窥孔优化几种窥孔优化的方法都比较好理解 这里不再重述课本内容 例题与习题解答 例11 1 假设只有R0和R1两个寄存器 对赋值语句d a b a c a c 生成目标代码 并写出寄存器描述数组RVALUE和变量地址描述数组AVALUE 该赋值语句的三地址序列 t a bt1 a ct2 t t1d t1 t2将此代码看成一基本块 并设在基本块末尾 变量d是活跃的 生成目标代码表如图 中间代码目标代码RVALUEAVALUEt a bLDR0 aR0含tt在R0中SUBR0 bt1 a cLDR1 aR0含tt在R0中SUBR1 cR1含t1t1在R1中t2 t t1ADDR0 R1R0含t2t2在R0中R1含t1t1在R1中d t1 t2ADDR0 R1R0含dd在R0中STR0 dd在R0和存储器中 例11 2 k3 假设R0 R1和R2为可用寄存器 试对以下各表达式分别生成最优目标代码 A B C D E F G H I J 解 首先生成三地址中间代码序列 T1 E FT2 D T1T3 G T2T4 C T3T5 H T4T6 B T5T7 A T6T8 I JT9 T7 T8 最优的目标代码 LDR0 EDIVR0 FADDR0 GMULR0 HMULR0 CADDR0 BADDR0 ALDR1 IMULR1 JADDR0 R1 例11 3 K1 对以下中间代码序列G T1 B CT2 A T1T3 D 1T4 E FT5 T3 T4W T2 T5假设可用寄存器为R0和R1 W是基本块出口的活跃变量 用简单代码生成算法生成目标代码 同时列出代码生成过程中的寄存器描述和变量地址描述 中间代码目标代码RVALUEAVALUET1 B CLDR0 BR0含T1T1在R0中SUBR0 CT2 A T1MULR0 AR0含T2T2在R0中STR0 T2T2同时在R0和存储器中T3 D 1LDR1 DR1含T3T3在R1中 ADDR1 1T4 E FLDR0 ER0含T4T4在R0中SUBR0 FT5 T3 T4MULR1 R0R1含T5T5在R1中LDR0 T2R0含T2T2在R0和存储器中W T2 T5DIVR0 R1R0含WW在R0中STR0 WW在R0和存储器中 第十二章并行编译基础 并行计算机是近二十几年来发展迅速的一类计算机 并行编译系统已经成为了现代高性能计算机系统中一个重要的部分 并行程序设计主要有两种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论