目录:
Motivation
调用图构建
过程间控制流分析
过程间数据流分析
重点:
学习如何利用类层级分析来构建调用图;过程间控制流/数据流分析;过程间的常量传播。
1.Motivation
问题:过程内的分析未考虑函数调用,导致分析不精确。
过程间分析:Inter-procedural Analysis,考虑函数调用,又称为全程序分析(Whole Program Analysis),需要构建调用图,加入Call edges和Return edges。
2.调用图构建
(1)调用图
定义:本质是调用边的集合,从调用点(call-sites)到目标函数(target methods / callees)的边。
示例:
5-2-1-call_graph.png
应用:是所有过程间分析(跨函数分析)的基础,程序优化,程序理解,程序调试。
(2)面向对象语言的调用图构造(Java)
代表性算法:从上往下精度变高,速度变慢,重点分析第1、4个算法。
Class hierarchy analysis(CHA)
Rapid type analysis(RTA)
Variable typ ...