DFA-FD
Iterative Algorithm, Another View
给定一个有 k 个节点的 CFG,迭代算法会更新每个节点 n 的 OUT[n] 值。那么就可以考虑把这些值定义为一个 k-tuple:
则,我们的数据流分析迭代算法框架就可记为
迭代过程就被记为:
...
此时我们发现
,意味着 就是 的一个不动点。
给定一个有 k 个节点的 CFG,迭代算法会更新每个节点 n 的 OUT[n] 值。那么就可以考虑把这些值定义为一个 k-tuple:
则,我们的数据流分析迭代算法框架就可记为
迭代过程就被记为:
...
此时我们发现
数据流分析的核心:How Data Flows on CFG?
将这句话展开来,所谓数据流分析就是:
How application-specific Data (对数据的抽象:+, -, 0 等……)
Flows (根据分析的类型,做出合适的估算) through the
Nodes (数据如何 transfer, 如 + op + = +) and
Edges (控制流如何处理,例如两个控制流汇入一个BB) of
CFG (整个程序) ?