1 / 16

第 2 章 数据流分析

第 2 章 数据流分析. 内容概述 数据流分析推导的是数据沿着程序执行路径流动的信息 过程内的分析:可用表达式分析、到达-定值分析等 过程间分析 Shape 分析 理论基础 数据流方程的求解. 第 2 章 数据流分析. 数据流分析的用途 编译优化、程序维护 程序安全性的检查 和编译原理课程的区别 基于源代码的结构化分析方法,而不是基于基本块和程序流图的分析 从过程内讨论到过程间 强调理论基础. 第 2 章 数据流分析. 数据流分析的正确性 数据流分析所得结论同程序运行时的情况一致 需要定义机器模型和操作语义,证明所得结论对操作语义可靠

wells
Download Presentation

第 2 章 数据流分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 数据流分析 • 内容概述 数据流分析推导的是数据沿着程序执行路径流动的信息 • 过程内的分析:可用表达式分析、到达-定值分析等 • 过程间分析 • Shape分析 • 理论基础 • 数据流方程的求解

  2. 第2章 数据流分析 • 数据流分析的用途 • 编译优化、程序维护 • 程序安全性的检查 • 和编译原理课程的区别 • 基于源代码的结构化分析方法,而不是基于基本块和程序流图的分析 • 从过程内讨论到过程间 • 强调理论基础

  3. 第2章 数据流分析 • 数据流分析的正确性 数据流分析所得结论同程序运行时的情况一致 • 需要定义机器模型和操作语义,证明所得结论对操作语义可靠 • 由于数据流分析收集的信息同基本块和控制流有关,通常和变量值无关,因此不同于一般的可靠性证明,例如Hoare逻辑的赋值公理是可靠的 {x = 1} x := x + 1 {x = 2}

  4. 活跃变量分析 • 活跃变量分析的正确性 • 需要将该正确性概念形式地表达出来 • 在活跃变量的初值相同的不同格局下S, 1 和S, 2执行程序S的结果应该是一样的 • 再细化一下,程序每执行一步,得到的不同格局S, 1和S, 2中,活跃变量的值都相同

  5. 第2章 数据流分析 • 数据流分析的基础 把各种数据流模式作为一个整体来抽象地研究,然后可以形式地回答数据流算法的下列几个基本问题: • 在什么情况下数据流分析中使用的迭代算法是正确的? • 该迭代算法所得解的精度如何? • 该迭代算法是否收敛? • 数据流方程的解的含义是什么?

  6. 第2章 数据流分析 • 为一类数据流模式建一个共同理论框架 • 总结已讨论过的四种数据流分析模式 • 整理出该框架的一些基本特征或原则 • 规范框架中的性质空间要满足的特征 • 规范框架中迁移函数要满足的性质 • 给出框架的定义 • 区分单调框架和分配框架的区别 • 常量传播数据流模式不是分配的

  7. 第2章 数据流分析 • 位向量框架(Bit vector framework) • Single-bit representation of each data flow property • Separability of solution  Data flow properties can be evaluated independently  Merge operation is a bitwise AND or OR operation • Monotonic bit function  A bit function cannot negate any bit

  8. 第2章 数据流分析 • 分配性蕴涵单调性的证明 l1 l2并且f(l1 l2) = f(l1)f(l2) 蕴涵 f(l1) f(l2) 证明 因为 f(l2) = f(l1 l2) = f(l1)f(l2) 所以 f(l1) f(l2)

  9. B2 B1 x = 3 y = 2 x = 2 y = 3 B3 z = x + y EXIT 第2章 数据流分析 • 常量传播框架的非分配性 说明常量传播框架没有分配性的例子

  10. … 3 2 1 0 1 2 3 …  第2章 数据流分析 • 整数格 • 表示没有任何信息可用 • 表示可能不是常量

  11. 阶乘函数 常函数1 {0,1,1,1,2,1} {0,1,1,1,2,2} . . . . . . . . . {0,1,1,1} . . . . . . {0,1} {0,5} . . . . . . . . .  第2章 数据流分析 • 用集合之间的包含关系来定义部分函数之间的偏序

  12. 第2章 数据流分析 • 数据流方程的求解 • IDEAL,基于程序所有可能执行路径的解,它少于或等于流图上的执行路径 • Meet Over all Paths(MOP),不仅汇集了所有可能路径的数据流值,而且还包括了那些不可能被执行路径的数据流值 • Maximum Fixed Point(MFP),由迭代算法得到的解 • 迭代算法得到的MFP解总是安全的 MFP  MOP  IDEAL

  13. ENTRY B2 B1 B3 B4 第2章 数据流分析 • MOP和MFP的比较 • 由MOP的定义,有 MOPo[B4] = ((fB3◦fB1)  (fB3◦fB2)) (vENTRY) • 在迭代算法(MFP)中, 如果按B1,B2,B3和B4的次序 访问结点,那么 MFPo[B4] = fB3(fB1(vENTRY) fB2(vENTRY)) 说明路径上较早汇合之影响的流图

  14. 第2章 数据流分析 • 敏感性分析 • 路径敏感分析 根据条件分支语句中的谓词来计算不同路径上的信息,它能够区分控制流图上不同路径的信息 • 路径不敏感分析 先前讨论的都是路径不敏感分析 • 流不敏感分析 语句的执行次序对分析来说无关紧要,S1; S2和S2; S1的分析结果肯定一样 • 流敏感分析 先前讨论的都是流敏感分析

  15. 第2章 数据流分析 • 敏感性分析 • 上下文不敏感分析 组合所有调用点的状态信息,对过程体仅分析一次,返回状态集合的信息用于所有的返回点 • 上下文敏感分析 区分带不同上下文信息的不同调用

  16. 第2章 数据流分析 • 过程间分析的关注点 • 上下文敏感分析 要注意调用和返回的匹配,注意上下文信息的传递 • 参数传递的方式 仅考虑传值和传结果方式 其他如传引用,会引起别名 • 过程作为参数 在此不考虑

More Related