Data Flow Analysis --- Application

2023-01-01

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

1. Data Flow Analysis

数据流分析,其实是建立在之前提到的 CFG(control flow graph)的基础上进行进一步的分析。

2. preliminaries of Data Flow Analysis

来点数据流分析的初步工作。
也就是有几个概念需要我们了解一下。
详情看图。

在每个程序执行到某个阶段时,都有inputoutput的概念

3. Reaching Definition Analysis

Reaching Definition Analysis 是数据流分析的其中一种应用,其本质是,观察程序运行不同阶段(point)中,各个定义(definition d)是否存在
这里值得一提的是,这个所谓的定义,有比较正式的概念

其实像上图:v = x op y 就是一个定义,即v的定义,它生成后,后续所有关于它的定义都在当前阶段都会被杀死(killed)

需要注意,Reaching Definition Analysis 是may analysis(即追求sound)

为了更方便得描述,我们需要知道Transfer functionControl Flow

Transfer function

其实就是下面一条公式
接下来来个具体的例子可能比较好
其实是给了你当前阶段的OUTPUT 公式

Control Flow

也只是一条公式
其实是给了你当前阶段 INPUT的公式

Algorithm

接下来给出 Reaching Definition Analysis的经典算法

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

4. Live variables Analysis

5. Available Expressions Analysis

三种应用的比较