1、蒋立源编译原理第三版第八章习题与答案蒋立源-编译原理第三版第八章-习题与答案(总10页)第8章 习题7-1 设有如下的三地址码(四元式)序列:read NI:=NJ:=2 L1 : if IJ goto L3 L2 : I:=I-Jif IJ goto L2 if I=0 goto L4 J:=J+1I:=Ngoto L1 L3 : Print YEShalt L4 : Print NOhalt试将它划分为基本块,并作控制流程图。7-2 考虑如下的基本块:D:=B*C E:=A+B B:= B*C A:=E+D(1) 构造相应的DAG;(2) 对于所得的DAG,重建基本块,以得到更有效的四元式
2、序列。7-3 对于如下的两个基本块:(1) A:=B*CD:=B/C E:=A+DF:=2*EG:=B*CH:=G*GF:=H*G L:=FM:=L(2) B:=3 D:=A+CE:=A*CF:=E+DG:=B*FH:=A+CI:=A*CJ:=H+IK:=B*5L:=K+JM:=L分别构造相应的DAG,并根据所得的DAG,重建经优化后的四元式序列。在进行优化时,须分别考虑如下两种情况:()变量G、L、M在基本块出口之后被引用;()仅变量L在基本块出口之后被引用。7-4 对于题图7-4所示的控制流程图:(1) 分别求出它们各个结点的必经结点集;(2) 分别求出它们的各个回边;(3) 找出各流程图
3、的全部循环。7-5 对于如下的程序:I:=1read J,KL: A:=K*IB:=J*IC:=A*Bwrite CI:=I+1if A100 goto Lhalt试对其中的循环进行可能的优化。第8章 习题答案7-1 解:划分情况及控制流程如答案图7-1所示:答案图7-1 将四元式序列划分为基本块7-2 解:(1) 相应的DAG如答案图7-2所示。答案图7-2 DAG(2) 优化后的代码为: D:=B*C E:=A+B B:=D A:=E+D7-3 解:(1) 相应的DAG如答案图7-3-(1)所示。若只有G、L、M在出口之后被引用,则优化后的代码为:G:=B*CH:=G*GL:=H*GM:=
4、L若只有L在出口之后被引用,则代码为:G:=B*CH:=G*GL:=H*G(2) 相应的DAG如答案图7-3-(2)所示。若只有G、L、M被引用,则代码为:D:=A+CE:=A*CF:=E+DG:=3*FL:=15+FM:=L若只有L被引用,则代码为:D:=A+CE:=A*CF:=E+DL:=+F15 7-4 解:(a) 必经结点集:D2=2 D3 =2,3, D4 =2,4 D5 =2,4,5 D6 =2,4,6 D7 =2,4,7 D8=2,4,7,8回边及相应的循环:74:4,5,6,782:2,3,4,5,6,7,8(b) 必经结点集:D1 =1 D2 =1,2D3 =1,2,3 D4
5、 =1,2,3,4D5 =1,2,3,5 D6 =1,2,3,6D7 =1,2,7 D8 =1,2,7,8回边及相应循环:72:2,3,4,5,6,7(c) 必经结点集:D1 =1 D2 =1,2, D3 =1,2,3 D4 =1,2,4, D5 =1,2,5 D6 =1,2,3,6, D7 =1,2,7回边及相应循环:52:2,3,4,566: 6注意:54不是回边。因为4不是5的控制结点。7-5 解:(1) 划分基本块后的流程图如答案图7-5-(1)所示。(2) 削弱运算强度后的流程图如答案图7-5-(2)所示。答案图7-5-(2) 削弱运算强度后的流程图(3) 消除归纳变量后的流程图如答案图7-5-(3)所示。答案图7-5-(3) 消除归纳变量后的流程图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1