基本块

2024 年 8 月 28 日 | 阅读 2 分钟

基本块包含一系列语句。控制流在语句的开头进入,并在末尾离开,没有任何停顿(除了块的最后一条指令)。

以下三个地址语句的序列构成一个基本块

基本块构造

算法: 分割成基本块

输入: 它包含三个地址语句的序列

输出: 它包含一个基本块列表,每个基本块中恰好有一个三个地址语句

方法: 首先确定代码中的领导者。查找领导者的规则如下

  • 第一条语句是领导者。
  • 如果存在条件或无条件 goto 语句,例如:if....goto L 或 goto L,则语句 L 是领导者
  • 如果指令 L 紧跟在 goto 或条件 goto 语句之后,例如:if goto B 或 goto B,则指令 L 是领导者

对于每个领导者,它的基本块由领导者和所有语句组成。它不包括下一个领导者或程序的结尾。

考虑以下用于两个向量 a 和 b 的点积的源代码,长度为 10

以上源程序的三个地址代码如下

B1

B2

基本块 B1 包含语句 (1) 到 (2)

基本块 B2 包含语句 (3) 到 (12)


下一个主题流图