程序模型、汇编、链接与加载详解
1. 程序模型
在程序设计与分析中,数据流程图和控制/数据流图是两种重要的程序模型,它们有助于我们理解和优化程序的执行。
1.1 数据流程图(DFG)
数据流程图是一种用于表示程序中操作执行顺序的图形化工具。它以节点表示操作,以边表示数据的流动方向。每个变量的所有边必须来自单一源,这种形式简单且紧凑。
数据流程图的一个重要优势在于,它使得C代码中操作的执行顺序不那么明显。这为我们提供了操作重新排序的可能性,有助于减少流水线或缓存冲突。同时,当操作的确切顺序无关紧要时,数据流程图也能发挥作用。它定义了基本块中操作的部分顺序,我们只需确保在使用某个值之前先计算出来,通常有多种满足此要求的表达式求值顺序。
例如,对于一个简单的基本块,其扩展数据流程图和标准数据流程图可以清晰地展示操作之间的数据依赖关系。
1.2 控制/数据流图(CDFG)
控制/数据流图在数据流程图的基础上,增加了描述控制的结构。在基本的CDFG中,有两种类型的节点:决策节点和数据流节点。数据流节点封装一个完整的数据流程图来表示一个基本块,而决策节点可以描述顺序程序中的各种控制类型。
CDFG可以由包含控制结构的C代码构建而成。矩形节点表示基本块,菱形节点表示条件判断。节点的条件由标签给出,边则标记了条件求值的可能结果。
构建while循环的CDFG很直接,因为while循环由测试和循环体组成,我们知道如何在CDFG中表示它们。对于for循环,在C语言中它可以用while循环来定义,因此也可以用类似的方法表示。
一个完整的CDFG模型可以使用
超级会员免费看
订阅专栏 解锁全文
836

被折叠的 条评论
为什么被折叠?



