📅  最后修改于: 2020-12-06 08:05:43             🧑  作者: Mango
基本块包含一个语句序列。控制流从语句的开始进入,而在结束时离开而没有任何停止(可能是该块的最后一条指令除外)。
以下三个地址语句序列构成一个基本块:
t1:= x * x
t2:= x * y
t3:= 2 * t2
t4:= t1 + t3
t5:= y * y
t6:= t4 + t5
算法:划分为基本块
输入:它包含三个地址语句的序列
输出:它包含一个基本块列表,每个三个地址语句恰好在一个块中
方法:首先确定代码中的领导者。寻找领导者的规则如下:
对于每个领导者,其基本块都由领导者和所有陈述组成。它不包括程序的下一个领导者或结尾。
考虑以下两个长度为10的向量a和b的点积的源代码:
begin
prod :=0;
i:=1;
do begin
prod :=prod+ a[i] * b[i];
i :=i+1;
end
while i <= 10
end
上面的源程序的三个地址代码如下:
B1
(1) prod := 0
(2) i := 1
B2
(3) t1 := 4* i
(4) t2 := a[t1]
(5) t3 := 4* i
(6) t4 := b[t3]
(7) t5 := t2*t4
(8) t6 := prod+t5
(9) prod := t6
(10) t7 := i+1
(11) i := t7
(12) if i<=10 goto (3)
基本块B1包含语句(1)至(2)
基本块B2包含语句(3)至(12)