Data Flow Analysis --- Application

2023-01-01

从本节开始,就高深了起来,因此建议配合 b站南京大学程序分析课程 进行食用。

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的经典算法

算法很简单。
下面给个例子分析

4. Live variables Analysis

5. Available Expressions Analysis

三种应用的比较