视频地址

南京大学《软件分析》课程05(Data Flow Analysis - Foundations I)

南京大学《软件分析》课程06(Data Flow Analysis - Foundations II)

Content

  1. 另一角度来看迭代算法
  2. 偏序
  3. 上界下界
  4. 格,半格,
  5. 通过格来表述数据流分析框架
  6. 单调性和不动点理论
  7. 由迭代算法到不动点理论
  8. 从格来看may和must analysis
  9. 可分配性和MOP比较
  10. 常量传播(不可分配)
  11. worklist algorithm(迭代算法的一个优化)

Iterative Algorithm,Another View

迭代算法就是产生了数据流分析的结果,而从另一个角度看:

该算法就是在每次遍历时更新结点的out信息,用一个元组来表示值,不断应用函数,直到两次输出的元组一样算法停止。

当X = F(X)时,X为不动点,算法到达了不动点

问题?

  • 算法一定会达到不动点吗?
  • 如果能达到不动点,只有一个不动点吗?我们求的是最好的不动点吗?
  • 什么时候能到达不动点

Parital Order

  • 定义

偏序说明集合里两个元素可能是不可比较的

Upper and Lower Bounds

  • 定义

  • 一些性质

    • 并不是所有偏序集都有lub或者glb
    • 如果一个偏序集有lub或glb,它肯定是唯一的

Lattice

  • 定义:偏序集中任意两个元素它的lub和glb都存在,那它就是一个格

半格(Semlattice)

其实就是只存在一个

全格(Complete Lattice)

  • 定义:格中任意子集的lub和glb都存在,则称为全格

  • top和bottom

  • 有穷的格都是全格(反过来不一定)

Product Lattice

Data Flow Analysis Framework via Lattice

  • D:数据流分析方向
  • L:包含了域值和操作符(meet or join)的格
  • F:转换函数

数据流分析可以看作不断地在格的值域上应用转换函数和meet或join的操作符,回顾上述的问题

  • 一定会停吗?------> 单调性
  • 只有一个不动点吗?最好的不动点? ------>不动点定理

Monotonicity

f:L->L(L是格)是单调的:

x<=y ------> f(x)<=f(y)

Fixed-Point Theorem

全格是单调有界的,则不动点可以通过迭代应用函数得到

Existence of Fixed Point

  1. bottom <= f(bottom):显然
  2. f(bottom) <= f(f(bottom)):单调性
  3. 继续套娃
  4. L又是有限的,所以会到不动点

Best Fixed Point

假设另一个不动点,数据归纳去证

Relate Iterative Algorithm to Fixed-Point Theorem

将两者关联,不动点定理的结论才能使用

  • F也是单调的:

    • Out never shrinks
    • 证明join和meet运算符的单调性

When will the algorithm reach the fixed point

  • 最坏情况:(h*k):h代表高度,k代表CFG中k个结点

    • 每次只变化一个(一个node的一个值):000 —> 001

May and Must Analyses,a Lattice View

important 图

  • 无论是may还是must,都是unsafe result -> safe result

How Precise is Out Solution

MOP

对所有的path应用path的F,在将结果meet(join或union)一下

  • 有一些path不会执行:先x=10,后if(x>10)
  • 没有边界的(while),不可枚举的(大程序),其实是概念上的

ours vs MOP

易证出:MOP<=ours ------> MOP更加准确

当F是可分配的的时候:F(x U y)= F(x)U F(y):ours和MOP是一样准确的

Bit-vector or Gen/kill problems(集合的交、并)都是可分配的

Constant Propagation - not distributive

  • 定义:x在程序某个点时是否一定指向一个常量(所有的path,x都应为一个值)

  • Direction:forwards
  • Lattice:

  • Transfer Function

    • _代表通配符
    • 只关注赋值

  • 为什么是不可分配的:

Worklist Algorithm,an optimization of Iterative Algorithm

核心:只计算in变化的block

Day 4 Data Flow Analysis-Foundations相关推荐

  1. 静态分析 第三课 Data Flow Analysis(1)

    Data Flow Analysis – Applications Overview of DFA Preliminaries of DFA Reaching Definitions Analysis ...

  2. idea中analysis之analyze data flow功能体验

    周末没啥事,就看了看idea的文档,其中发现了一个感觉挺不错的功能,可以用来分析代码的影响范围,在这里分享记录一下 官方文档说明地址 https://www.jetbrains.com/help/id ...

  3. [论文阅读] (03) 清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

    数据流敏感的漏洞挖掘方法 Discover Vulnerabilities with Flow Sensitive Fuzzing Chao Zhang 清华大学 2nd International ...

  4. Inspection info: This inspection analyzes method control and data flow to report possible conditions

    练习算法题的时候遇到这个错误: Condition 'n<5' is always 'true'" less.. (Ctrl+F1) Inspection info: This ins ...

  5. Data Oriented Analysis Design

    前言 ========================================== 偶然的機會裡,看到了呆伯特法則,除了常常捧腹大笑以外,總覺得自 己在軟體界待過以後,看到的現象,其實跟書上寫 ...

  6. [当人工智能遇上安全] 2.清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  7. 南京大学软件分析第九节——Pointer Analysis - Foundations I

    视频:南京大学<软件分析>课程09(Pointer Analysis - Foundations I)哔哩哔哩_bilibili 课程主页:Static Program Analysis ...

  8. 深度学习编译器Data Flow和Control Flow

    深度学习编译器Data Flow和Control Flow 本文介绍了一下深度学习框架的Data Flow和Control Flow,基于TensorFlow解释了TensorFlow是如何在静态图中 ...

  9. Spring Cloud Data Flow 中的 ETL

    来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据管道和批处理过程的云原生工具包. Spring Cloud Data Flow已准备好用 ...

最新文章

  1. Domino Web开发规则之三:以资源管理库为中心开发
  2. 一些蛮好的题目,学习
  3. Win2003 Server手动设置全攻略
  4. 2016.07.13-vectorvectorint应用2——Two Sum扩展
  5. mysql数据库与oracle_oracle与mysql数据库的区别
  6. 求阶乘,输入一个正整数 n,输出n!
  7. 【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...
  8. OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题
  9. 计算机图形学考试题及答案_计算机图形学考试题及答案
  10. 对比一段ADC键值读取的代码
  11. SQL数据库语言基础之SqlServer表数据的插入、更新与删除
  12. 课堂考试作弊检测系统,情绪识别、表情识别和人脸识别结合
  13. 查找某个数据,找到后把符合条件数据的一行复制到另外一个地方
  14. 关于javaswing做的游戏的一点小总结x
  15. mysql 电商项目(二)
  16. 机器学习十大经典算法——knn
  17. arcgis拓扑检查和修改
  18. IDM6.38使用教程 ——下载加速 百度云下载加速 捕获网页视频,音乐
  19. 单峰分布(unimodal distribution)、双峰分布 (bimodal distribution)以及偏态分布(skewness distribution)
  20. VC dll依赖性查看工具depends

热门文章

  1. java无线投屏代码,Android PC投屏功能实现的示例代码
  2. 鸡蛋的营养价值和正确吃法
  3. 关于iOS 的一些总结
  4. C++基础学习-26继承的构造函数、多重继承、虚继承
  5. “疾风知劲草”原来是刘秀说王霸的呀
  6. 406问题解决方法-ssm框架学习过程所遇问题
  7. 2022世界燕窝展|上海滋补品展|海参展谈天冷了,滋补文案怎么写?
  8. OAK深度相机操作温度范围说明
  9. OpenVas 漏洞扫描器下载使用教程
  10. 和光同尘宝库:躺平即是正义,是争渡还是躺平