控制流图(Control Flow Graph)
1.定义
百度百科:
维基百科:
控制流图的几种结构:
2.特点
- 控制流程图是过程导向的
- 控制流程图显示了程序执行过程中可以遍历的所有路径
- 控制流程图是一个有向图
- CFG 中的边描述控制流路径,节点描述基本块
- 每个控制流图都存在2个指定的块:Entry Block(输入块),Exit Block(输出块)
3.实例
- 例1:
其控制流图为:
- 例2:计算整数X和整数Y的最大公约数
其控制流图为:
4.控制依赖性(Control dependencies)
控制依赖讲的是:在某种情况下,一个程序指令的执行依赖于前面指令的执行(在前面某个指令执行后才会执行)。
下面从一个例子来说明控制依赖性:
上面我们可以看出:只有在S1语句x <= 2时,才会执行S2语句,也就是说S2的执行仅受S1语句的控制(影响),那么我们就称S1与S2具有控制依赖性。
5.数据依赖性:
数据依赖产生于两个访问或修改相同资源的语句。
同样从例子来说明数据依赖性:
从上面我们可以知道:x 值的变化会引起 y 值得变化,那么我们就称 y 依赖于 x,y 与具有数据依赖性。
我的公众号!
参考:
- https://blog.csdn.net/spring_willow/article/details/70814214?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161893381516780262592064%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161893381516780262592064&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-70814214.first_rank_v2_pc_rank_v29&utm_term=%E6%8E%A7%E5%88%B6%E6%B5%81%E5%9B%BE
- https://baike.baidu.com/item/%E6%8E%A7%E5%88%B6%E6%B5%81%E5%9B%BE/5984243?fr=aladdin
- https://en.wikipedia.org/wiki/Control-flow_graph
- https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/
- https://en.wikipedia.org/wiki/Dependence_analysis#Control_dependencies
- https://www.runoob.com/perl/perl-until-loop.html
梦不会逃走,逃走的一直都是自己。
——《蜡笔小新》