从本节开始,就高深了起来,因此建议配合 b站南京大学程序分析课程 进行食用。
- 1. Data Flow Analysis
- 2. preliminaries of Data Flow Analysis
- 3. Reaching Definition Analysis
- 4. Live variables Analysis
- 5. Available Expressions Analysis
- 三种应用的比较
1. Data Flow Analysis
数据流分析,其实是建立在之前提到的 CFG(control flow graph)的基础上进行进一步的分析。
2. preliminaries of Data Flow Analysis
来点数据流分析的初步工作。
也就是有几个概念需要我们了解一下。
详情看图。
在每个程序执行到某个阶段时,都有input和output的概念
3. Reaching Definition Analysis
Reaching Definition Analysis 是数据流分析的其中一种应用,其本质是,观察程序运行不同阶段(point)中,各个定义(definition d)是否存在
这里值得一提的是,这个所谓的定义,有比较正式的概念
其实像上图:v = x op y
就是一个定义,即v的定义,它生成后,后续所有关于它的定义都在当前阶段都会被杀死(killed)。
需要注意,Reaching Definition Analysis 是may analysis(即追求sound)
为了更方便得描述,我们需要知道Transfer function 和 Control Flow
Transfer function
其实就是下面一条公式
接下来来个具体的例子可能比较好
其实是给了你当前阶段的OUTPUT 公式
Control Flow
也只是一条公式
其实是给了你当前阶段 INPUT的公式
Algorithm
接下来给出 Reaching Definition Analysis的经典算法
算法很简单。
下面给个例子分析