1、if IJ goto L2 if I=0 goto L4 =J+1goto 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,重建基本块,以得到更有效的四元式序列。7-3 对于如下的两个基本块:(1) A:=B/C=A+DF:=2*EG:H:=G*G=H*G L:=FM:=L(2) B:=3 D:=A+CE:=A*C=B*F=H+IK:=B*5L:=K+J分别构造相应的DAG,并根据所得的DAG,重
2、建经优化后的四元式序列。在进行优化时,须分别考虑如下两种情况:()变量G、L、M在基本块出口之后被引用;()仅变量L在基本块出口之后被引用。7-4 对于题图7-4所示的控制流程图:(1) 分别求出它们各个结点的必经结点集;(2) 分别求出它们的各个回边;(3) 找出各流程图的全部循环。7-5 对于如下的程序:=1read J,K=K*IB:=J*IC:=A*Bwrite C=I+1if A100 goto L试对其中的循环进行可能的优化。第8章 习题答案7-1 解:划分情况及控制流程如答案图7-1所示:答案图7-1 将四元式序列划分为基本块7-2 解:(1) 相应的DAG如答案图7-2所示。答
3、案图7-2 DAG(2) 优化后的代码为:=D7-3 解:(1) 相应的DAG如答案图7-3-(1)所示。若只有G、L、M在出口之后被引用,则优化后的代码为:若只有L在出口之后被引用,则代码为:(2) 相应的DAG如答案图7-3-(2)所示。若只有G、L、M被引用,则代码为:=3*F=15+F若只有L被引用,则代码为:=+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
4、,2D3 =1,2,3 D4 =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,752: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) 消除归纳变量后的流程图