精确高效的C语言指针分析技术研究.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘摘摘 要要要 在C语言的程序分析中,指针分析用来分析一个指针所有可能指向的存储位置, 包括程序中的全局变量、局部变量、动态数据区域等。它是一类特殊的数据流问题, 这个问题的解决程度如何将直接影响其它很多数据流问题解决得好坏。因此,对于含 有指针别名行为的程序,指针分析是静态程序分析的基础。在过去的20年里,指针分 析问题的研究已经成为程序分析技术研究的重点之一,至今依然是一个活跃的研究领 域。精确的指针分析可以优化编译器生成的代码、发掘更多的指令级并行机会。性能 良好的程序错误检测器也同样依赖于指针分析的精度,精确的指针分析可以减少错误 检测器的误报及漏报,提高错误的定位精度。其他一些应用,如硬件综合、多线程程 序分析等同样需要以精确的指针分析为基础。然而目前已有的指针分析要么分析效率 高但精度不高,比如流不敏感上下文不敏感的指针分析;要么精度高而分析效率低, 比如流敏感上下文敏感的指针分析,目前还无法分析超过百万行的程序。针对这两种 问题,我们设计了两种指针分析算法,分别从不同方面提高了指针分析的精度和效 率。 本文的主要贡献如下: • 提出了一种激进的基于合并的域敏感指针分析方法。该方法利用目标机器模型中 的数据布局信息进行高层分析,使用基地址和偏移的组合来激进地表示一个结 构体域成员以能够更精确的区分结构体的不同域成员。该方法还对原有类型推 导规则做了重要改进,有效地避免在合并类型变量时造成的精度损失。实验结果 表明,该方法分析精度显著高于以往方法,精确度平均提高4倍,最多提高13倍, 而运行开销几乎相当。 • 提出了一种高效的流敏感上下文敏感指针分析方法。按指针的指向 层次从高到低逐层分析各层指针。该方法利用前述的激进的基于合并的域敏感 指针分析来计算指针的指向层次,利用程序的SSA形式提高流敏感分析效率,利 用BDD紧凑的表示上下文信息提高上下文敏感分析效率。与已有最新的同类指 针分析相比,算法在分析效率上有非常大的提高,使得能只用几分钟时间 完成对超过一百万行的C程序进行流敏感上下文敏感的指针分析。 • 提出将流敏感的指针分析和稀疏的SSA形式相结合的处理方法。该方法能逐层地 对所有变量在全稀疏的SSA形式上使用流不敏感的算法达到流敏感的分析效果, 大大降低了流敏感分析的时空开销。 精确高效的语言指针分析技术研究 • 提出一种完全转移函数的计算方法。基于逐层分析,用过程的高层输入参数的指 向关系来表示当前层指针的调用上下文,并将其编码到过程的转移函数中。根据 过程的完全转移函数,就可以准确有效的得到每个被调用点的上下文,从而避免 了用调用路径来区分过程的不同调用上下文而引起的指数级路径爆炸问题。 • 研究了一种指针分析算法精度的形式化衡量标准,针对指针分析中几个常见的衡 量属性进行形式化的描述,以期更简单公平的衡量各种指针分析算法的精度。文 中还通过分析几种现存典型的指针分析来说明该标准的有效性。 关键词:指针分析,指向分析,别名分析,域敏感,流敏感,上下文敏感 Pointer analysis is a static program analysis technique that aims at finding the memory objects a pointer may point to during the runtime of a given program statically. It is a special data flow problem that has significant impact on many other consequent applications. So, for programs with pointer alias behavior, especially for C programs, pointer analysis is the basis of most other static program analyses and

文档评论(0)

beoes + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档