有了入口语句的概念之后,我们就可以给出划分中间代码(四元式程序)为基本块的算法, 其步骤如下: ① 求出四元式程序中各个基本块的入口语句。 ② 对每一入口语句,构造其所属的基本块。它是由该入口语句到下一入口语句(不包括下一入口语句),或到一转移语句(包括该转移语句),或到一停语句(包括该停语句)之间的语句序列组成的。 ③ 凡未被纳入某一基本块的语句、都是程序中控制流程无法到达的语句,因而也是不会被执行到的语句,可以把它们删除。 我们以下述四元式程序为例来说明如何划分基本块的: (1) read (C) (2) A:= 0 (3) B:= 1 (4) L1: A:=A + B (5) if B>= C goto L2 (6) B:=B+1 (7) goto L1 (8) L2: write (A) (9) halt 先求出四元式程序中各个基本块的入口语句, 语句(1)是程序的第一个语句,因此它是入口语句。 语句(4)和语句(8)是条件转移语句或无条件转移语句的转移目标语句,因此是入口语句。 语句(6)是紧跟在条件转移语句后面的语句,因此是入口语句。 这样,语句(1),(2)和(3)构成一个基本块,语句(4)和(5)构成一个基本块,语句(6)和(7)构成一个基本块,语句(8)和(9)构成一个基本块。 |