论文部分内容阅读
指针分析,是指通过对源程序的分析近似地求出源程序中指针表达式所指向的目标,它在程序静态分析领域中有着非常重要的作用,并非常具有挑战性,它的分析结果也被广泛应用于程序的优化、安全分析和验证等方面,其中精确的指针分析结果及尽可能优秀的时间分析效率在安全分析方面起着非常重要的作用。因此研究出一个高精度且尽可能高时间分析效率的指针分析算法具有非常重要的意义。基于包含的指针分析方法是一类重要的上下文无关的指针分析方法,其拥有很好的时间分析效率。而基于包含的横向传播和纵向传播方法是当前最优秀的基于包含的指针分析在线优化技术,其从时间和空间方面大大优化了基于包含的指针分析方法,使得其时间和空间效率较以前的算法有了很大的提高,然而其仍然是上下文无关的指针分析方法,既虽然其时间分析效率优越但其指针分析结果仍然不够精确。而基于调用图的上下文敏感指针分析及其上的环消除技术是当前最优秀的上下文敏感的指针分析技术,其拥有优越于同类指针分析技术的时间分析效率同时又有非常高的分析精度,但是相比基于包含的横向传播和纵向传播方法其时间分析效率仍然不够乐观。因此,本文首先针对纵向传播方法的不足之处进行了改进,然后,结合基于包含的横向传播和纵向传播方法优秀的时间分析效率及基于调用图的上下文敏感指针分析及其上的环消除技术高精度的优点提出了两个新的上下文敏感的横向传播和纵向传播算法,既通过使用横向传播和纵向传播方法在线优化技术来优化上下文敏感指针分析及其上的环消除技术。本文通过实例分析及使用CIL工具在相应的平台上进行相关实验,实验验证了改进的纵向传播方法能够在不损失时间开销的条件下以更小的内存开销实现纵向传播,能在纵向传播过程中检测出约束图中所有的强连通分量;相比于基于调用图的上下文敏感指针分析及其上的环消除技术,新的上下文敏感横向传播和纵向传播技术在分析大规模程序时在保证分析精度的情况下其时间花费分别减少了约9s和10s左右。