基本块的定义和性质p255 例如下基本块 (1)T1:=A*B ■基本块的定义 (2)T2:=3/2 ◆是指程序中一顺序执行的 语句 (3)T3:=T1-T2 语句序列,其中只有一个 (4)X:=T3 入口语句和一个出口语句 (5)C:=2 基本块的性质 (6)T4:=AB ■有唯一入口和唯一出口 (7)T5:=18+C ■块内各个操作按序执行, 出口 (8)T6:=T4*T5 不出现任何分叉 语句 (9)Y:=T6 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 2025/4/2 6/25
2025/4/2 基本块的定义和性质 p255 ◼ 基本块的定义 ◆是指程序中一顺序执行的 语句序列,其中只有一个 入口语句和一个出口语句 例如下基本块 (1)T1:=A*B (2)T2:=3/2 (3)T3:=T1-T2 (4)X:=T3 (5)C:=2 (6)T4:=A*B (7)T5:=18+C (8)T6:=T4*T5 (9)Y:=T6 入口 语句 出口 语句 ◼ 基本块的性质 ◼ 有唯一入口和唯一出口 ◼ 块内各个操作按序执行, 不出现任何分叉 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 6/25
基本块入口语句的确定 ■确定规则 规则1 1.程序的第一条语 9 句;或者 规则2 2.能由条件转移语 @或图t0o goto(8) 句或无条件转移 规则3 语句转移到的语 @5X:= (6)Y:=R 句;或者 (7)goto(3) 3.紧跟在条件转移 语句后面的语句 规则2@8)ite (9)halt ■ 举例 共4个入口语句,对应4个基本块 2025/4/2 7/25
2025/4/2 基本块入口语句的确定 ◼ 确定规则 1.程序的第一条语 句;或者 2.能由条件转移语 句或无条件转移 语句转移到的语 句;或者 3.紧跟在条件转移 语句后面的语句 ◼ 举例 (1)read X (2)read Y (3)R:=X mod Y (4)if R=0 goto(8) (5)X:=Y (6)Y:=R (7)goto(3) (8)write Y (9)halt 共4个入口语句 规则2 规则1 规则2 规则3 ① ② ③ ④ ,对应4个基本块 7/25
划分基本块的算法p256 ■1.求出四元式程序中各个基本块的入口语句 ■2.对以上求出的每一个入口语句,构造其所 属的基本块。由该入口语句 (1)到另一入口语句(不包括该入口语句)或者 (2)到一转移语句(包括该转移语句);或者 (3)到一停语句(包括该停语句) 之间的语句序列组成 ■3.凡未被纳入某一基本块的语句,都是程序 中控制流程无法到达的语句,从而也是不会 被执行到的语句,可把它们从程序中删除 2025/4/2 8/25
2025/4/2 划分基本块的算法 p256 ◼ 1.求出四元式程序中各个基本块的入口语句 ◼ 2.对以上求出的每一个入口语句,构造其所 属的基本块。由该入口语句 (1)到另一入口语句(不包括该入口语句)或者 (2)到一转移语句(包括该转移语句);或者 (3)到一停语句(包括该停语句) 之间的语句序列组成 ◼ 3.凡未被纳入某一基本块的语句,都是程序 中控制流程无法到达的语句,从而也是不会 被执行到的语句,可把它们从程序中删除 8/25
划分基本块课堂练习 BEGIN 规则1)read C (2)A:=0 (3)B:=1 规则2 @4)A:=A+B (5)if B=C goto(8) 规则3 9 规则 2 (8)write A (9)halt 共4个入口语句,对应4个基本块 2025/4/2 D 9/25
2025/4/2 划分基本块课堂练习 (1)read C (2)A:=0 (3)B:=1 (4)A:=A+B (5)if B=C goto(8) (6)B:=B+1 (7)goto(4) (8)write A (9)halt 共4个入口语句 规则2 规则1 规则2 规则3 ① ② ③ ④ ,对应4个基本块 BEGIN 9/25