源代码通常有许多指令,这些指令总是按顺序执行,被认为是代码的基本块。这些基本块之间没有任何跳转语句,即在执行第一条指令时,同一基本块中的所有指令都将按照它们出现的顺序执行,而不会失去程序的流程控制。
一个程序可以有各种结构作为基本块,如 IF-THEN-ELSE、SWITCH-CASE 条件语句和循环,如 DO-WHILE、FOR 和 REPEAT-UNTIL 等。
我们可以使用以下算法来查找程序中的基本块:
-
搜索基本块开始的所有基本块的标题语句:
- 程序的第一个语句。
- 作为任何分支目标的语句(条件/无条件)。
- 任何分支语句之后的语句。
-
标题语句及其后面的语句构成一个基本块。
-
基本块不包括任何其他基本块的任何标题语句。
从代码生成和优化的角度来看,基本块都是重要的概念。
基本块在识别变量方面发挥着重要作用,这些变量在单个基本块中被多次使用。如果任何变量被多次使用,则分配给该变量的寄存器内存不需要清空,除非该块完成执行。
程序中的基本块可以通过控制流图来表示。控制流程图描述了程序控制是如何在块之间传递的。这是一个有用的工具,通过帮助定位程序中任何不需要的循环来帮助优化。