文章目录
前言
视频:北大-软件分析-公开课
文档:课件
简单记录下。
过程间分析
过程间分析(Inter-procedural Analysis)考虑过程调用的分析。有时又称为全程序分析Whole Program Analysis,对于C, C++等语言,有时又称为链接时分析Link-time Analysis。基本思路如下:
- 对不同过程采用不同抽象域
- 在调用和返回的时候添加结点来转换信息
- 全局变量需要加到所有使用的过程和这些过程的直接和间接调用者中
基于函数摘要的过程间分析
动机1:在数据流分析中,很多转换函数的效果可以互相抵消,但我们还是要针对每一个进行计算。
动机2:程序分析中大量代码是库代码,往往分析一个很小的程序就要分析大量库代码。
基于函数摘要的加速技术:将一个过程摘要成一个转换函数。如果节省下来的冗余计算大于摘要花费,则加速
了程序分析。库函数可以提前做成摘要,在分析用户代码的时候直接使用摘要。