本文浏览
…
知识点
流敏感
- 上下文敏感技术
- 过程间分析技术 ICFG = CFGs + call &return edges
- 指针分析技术
上下文敏感(Context Sensitivity CS)
过程间分析技术
在乎每一个过程,每一个方法的具体执行情况,大大提升精度。
流不敏感
-
CHA技术
-
过程内分析
-
上下文不敏感
CHA (类继承关系构建)的特征
- 只考虑类继承结构,所以很快
- 因为忽略了数据流和控制流的信息,所以不太准确
面试题
AST和IR的对比
AST 相对来说比较**高级**,可读性比较高对象开发者,而相反IR更倾向于机器。AST规范不统一,每一种语言大致相同但不完全一样,而IR是统一的规范的。Call Graph Construction (CHA) 调用关系图构造
- 过程间分析 必要的数据结构Call Graph
- 当前有数种方法来构建Call Graph,本节介绍其中速度最快的一种(Class hierarchy analysis,简称CHA)
流敏感与上下不敏感对比
- 首先流敏感技术的速度会大大降低,但精度会大大提高。牺牲精度从而提高速度。
-
流敏感分析重视语句执行的顺序,而流不敏感分析则恰恰相反。
这也了导致前者的精度更高,但优势不是特别大;后者的开销则远远小于前者。
- 流敏感技术一般都是采用上下文敏感和过程间分析技术。
评论
使用 GitHub 账号留言,讨论将同步为仓库 Issues。