Day 4 Data Flow Analysis-Foundations
视频地址
南京大学《软件分析》课程05(Data Flow Analysis - Foundations I)
南京大学《软件分析》课程06(Data Flow Analysis - Foundations II)
Content
- 另一角度来看迭代算法
- 偏序
- 上界下界
- 格,半格,
- 通过格来表述数据流分析框架
- 单调性和不动点理论
- 由迭代算法到不动点理论
- 从格来看may和must analysis
- 可分配性和MOP比较
- 常量传播(不可分配)
- 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
- bottom <= f(bottom):显然
- f(bottom) <= f(f(bottom)):单调性
- 继续套娃
- 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相关推荐
- 静态分析 第三课 Data Flow Analysis(1)
Data Flow Analysis – Applications Overview of DFA Preliminaries of DFA Reaching Definitions Analysis ...
- idea中analysis之analyze data flow功能体验
周末没啥事,就看了看idea的文档,其中发现了一个感觉挺不错的功能,可以用来分析代码的影响范围,在这里分享记录一下 官方文档说明地址 https://www.jetbrains.com/help/id ...
- [论文阅读] (03) 清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
数据流敏感的漏洞挖掘方法 Discover Vulnerabilities with Flow Sensitive Fuzzing Chao Zhang 清华大学 2nd International ...
- 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 ...
- Data Oriented Analysis Design
前言 ========================================== 偶然的機會裡,看到了呆伯特法則,除了常常捧腹大笑以外,總覺得自 己在軟體界待過以後,看到的現象,其實跟書上寫 ...
- [当人工智能遇上安全] 2.清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- 南京大学软件分析第九节——Pointer Analysis - Foundations I
视频:南京大学<软件分析>课程09(Pointer Analysis - Foundations I)哔哩哔哩_bilibili 课程主页:Static Program Analysis ...
- 深度学习编译器Data Flow和Control Flow
深度学习编译器Data Flow和Control Flow 本文介绍了一下深度学习框架的Data Flow和Control Flow,基于TensorFlow解释了TensorFlow是如何在静态图中 ...
- Spring Cloud Data Flow 中的 ETL
来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据管道和批处理过程的云原生工具包. Spring Cloud Data Flow已准备好用 ...
最新文章
- Domino Web开发规则之三:以资源管理库为中心开发
- 一些蛮好的题目,学习
- Win2003 Server手动设置全攻略
- 2016.07.13-vectorvectorint应用2——Two Sum扩展
- mysql数据库与oracle_oracle与mysql数据库的区别
- 求阶乘,输入一个正整数 n,输出n!
- 【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...
- OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题
- 计算机图形学考试题及答案_计算机图形学考试题及答案
- 对比一段ADC键值读取的代码
- SQL数据库语言基础之SqlServer表数据的插入、更新与删除
- 课堂考试作弊检测系统,情绪识别、表情识别和人脸识别结合
- 查找某个数据,找到后把符合条件数据的一行复制到另外一个地方
- 关于javaswing做的游戏的一点小总结x
- mysql 电商项目(二)
- 机器学习十大经典算法——knn
- arcgis拓扑检查和修改
- IDM6.38使用教程 ——下载加速 百度云下载加速 捕获网页视频,音乐
- 单峰分布(unimodal distribution)、双峰分布 (bimodal distribution)以及偏态分布(skewness distribution)
- VC dll依赖性查看工具depends