-->
当前位置:首页 > 题库 > 正文内容

主观题:h0035. 对如下程序段划分基本块,画出流图,进行尽可能多的优化,并指出进行了何种优化,给出建议说明及优化后的结果形式。

Luz3年前 (2022-06-03)题库861
对如下程序段划分基本块,画出流图,进行尽可能多的优化,并指出进行了何种优化,给出建议说明及优化后的结果形式。


I = 1
read J, K
L: A = K * I
B = J * I
C = A * B
write C
I = I + 1
if I < 100 goto L






答案:解答:
(1) 首先划分基本块并画出其程序流图,其中有三个基本块B1,B2,B3,有一条回边B2 → B2,相应的循环是{B2}。--------5分


![11.jpg](~/6206263f-d740-4c6f-bda2-b3432f87fb91.jpg)

(2) 强度削弱: 在B2中A和B为乘法运算,可以削弱它们的运算强度,变乘法为加法,优化结果如下图。--------5分

![12.jpg](~/103b9a1f-36d4-487d-9799-dd84656d96e3.jpg)

(3) 删除归纳变量:在循环中,i是循环的基本归纳变量,A,B是同族的归纳变量,且有线性关系,变换循环控制条件,流图如下。--------5分

![13.jpg](~/209845ce-0904-42ec-8bd0-9b1d62918c12.jpg)

(4) 代码外提:由于删除归纳变量后有R :=K * 100,是循环不变运算,可以提到前置结点B2'中。--------5分





发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。