静态分析 - 数据流分析

来源:互联网 发布:防御矩阵2无限金币文档 编辑:程序博客网 时间:2024/04/27 17:41

      为了打基础,看的《 Lecture Notes On Static Analysis》,结果这么多理论 = =  先记录点再说!


数据流分析相关概念:https://en.wikipedia.org/wiki/Category:Data-flow_analysis

CFG:Control Flow Graghs,控制流图是一个有向图,图中的节点代表程序点,而边则代表可能的控制流。一个CFG有一个入口点entry,和一个出口点exit

Liveness:针对变量的概念,如果一个变量当前的值可能会在程序接下来的执行过程中再次被读取,则这个变量是live的

Available Expressions:针对非平凡表达式的概念,如果一个非平凡表达式当前的值在程序前期执行过程中已经被计算过,则这个非平凡表达式在此程序点是available的

Very Busy Expressions:针对表达式的概念,如果一个表达式在当前的值改变之前一定会被再次计算,则称该表达式是very busy的

Reaching Definitions:在一个程序点,如果赋值语句可能已经定义了变量的当前值,则称这些赋值语句是reaching definitions

          例如:s1:y = 4;

                      s2:x = y:

           则s1是s2的reaching definition


数据流分析分类:

Forwards:前向分析,计算程序past行为的信息。分析从CFG的entry节点开始一直到exit节点。

Backwards:后向分析,计算程序futre行为的信息。分析从CFG的exit节点开始一知道entry节点。

must:低近似级别的分析 They can be characterized by the right-hand sides of constraints using a intersection operator to combine information.

may:高近似级别的分析 They can be characterized by the right-hand sides of constraints using aunion operator to combine information.








0 0