基本块:
识别基本块:
例子,下面第一个红色到第二个红色(不包括)之间的都是一个基本块。一共4个。
从而可以绘制控制流图。
控制流图
控制节点的概念,比如2是3的控制,且是真控制,且是直接控制。
控制关系的性质:
上面的s是开始的那个基本块,即程序开始的地方。
有了上述的控制的概念,有假设有如下的控制流图。我们可以画出控制树。
控制树
有了控制流图和控制树,我们可以识别一些循环。
有如下发现。
回边
进一步要求:
自然循环识别
例如对于,下面的控制流图,(6,6)是回边,因为6控制6。所以{6}是一个循环。
4控制着{4,5,6,7},有回边(7,4),且满足入口点唯一,是4。所以也是循环。
{2,3,4}不是循环,为什么?
2控制{3,4},但是入口节点不唯一,因为可能会从4开始进入循环。所以应该扩大循环范围{2,3,4。。。}。