第十一章 目标代码生成.ppt





《第十一章 目标代码生成.ppt》由会员分享,可在线阅读,更多相关《第十一章 目标代码生成.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十一章第十一章 目标代码生成目标代码生成源程序编译前端中间代码代码优化中间代码代码生成器目标程序符 号 表代码生成器的位置代码生成器的位置目标代码一般有以下三种形式:(1)能独立执行的机器语言代码,所有地址均已定位。(2)待装配的机器语言模块。当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码。(3)汇编语言代码,尚须经过汇编程序汇编,转换成可执行的机器代码。代码生成器着重考虑两个问题:如何使生成的目标代码较短;是如何充分利用计算机的寄存器,减少目标代码中访问存储单元的次数。这两个问题直接影响代码的执行速度。基本问题代码生成器的输入目标程序选择适当的代码指令
2、寄存器分配方案计算顺序例例:考察下面中间代码序列考察下面中间代码序列 G1:G1:T1:=A+BT1:=A+B T2 :=A-B T2 :=A-B F :=T1*T2 F :=T1*T2 T1:=A-B T1:=A-B T2:=A C T2:=A C T3:=B-C T3:=B-C T1:=T1*T2 T1:=T1*T2 G:=T1*T3 G:=T1*T3对应的DAG如图A A A AB B B BC C C C+n1n1n1n1-n2n2n2n2n4n4n4n4T2T2T2T2*-F F F Fn3n3n3n3*G G G Gn7n7n7n7T3T3T3T3n5n5n5n5T1T1T1T1n
3、6n6n6n6A A A A 上图的上图的DAG含有含有7个结点,我们应用课本中的算法。把它个结点,我们应用课本中的算法。把它们排序,主要步骤如下。们排序,主要步骤如下。第一步置初值:第一步置初值:i=7;T的所有元素全为空的所有元素全为空null。内内部结点部结点n3和和n7均满足第三步的要求,假定我们选取均满足第三步的要求,假定我们选取T7为结点为结点n3。结点结点n3的最左子结点(内部)的最左子结点(内部)n1满足第满足第5步步的要求,因此按第的要求,因此按第6步,步,T6=n1.但但n1的最左子结的最左子结A为为叶结,不满足第叶结,不满足第6步的要求。则现在只有步的要求。则现在只有n7
4、满足第满足第3步要步要求,于是求,于是T5=n7。结点结点n7 的最左子结的最左子结n6满足第满足第5步步的要求,因此的要求,因此T4=n6。结点结点n6的最左子结点的最左子结点n2同样同样满足第满足第5步的要求,因此步的要求,因此T3=n2.余下的满足第余下的满足第3步要步要求的尚有求的尚有n4和和n5,假定选取假定选取T2=n4。当把当把n5列为列为T1后,算法工作结束。至此,我们求出的图的内结点后,算法工作结束。至此,我们求出的图的内结点顺序为:顺序为:n5,n4,n2,n6,n1,n3.按这个次序从新表示按这个次序从新表示中间代码序列为中间代码序列为G1为:为:T3:=B-C ;T2:
5、=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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一章 目标代码生成 第十一 目标 代码 生成

限制150内