题名 | 一种基于中间格式表示的可复用程序分析系统 |
作者 | 郑瑶海 |
学位类别 | 博士 |
答辩日期 | 2006-06-02 |
授予单位 | 中国科学院软件研究所 |
授予地点 | 软件研究所 |
关键词 | 中间表示 控制流分析 程序分析系统 静态程序分析 动态程序分析 |
中文摘要 | 程序分析技术是以程序为处理对象,按信息获取的需求对程序进行具体的分析。随着现代程序设计技术的发展和软件规模的扩大,程序分析技术在软件工具和软件工程中得到了更多的应用与推广,对软件开发的智能化和自动化起着重要作用。比如,敏捷开发过程中自动化重构的实现,软件测试中路径覆盖问题的确定和测试用例的生成,程序开发中的调试,以及编译优化等都需要相关程序分析技术的支持。程序分析技术的发展与应用提高了软件开发的效率。 以往针对程序分析算法实现的系统中,一般来说存在两方面的不足。一是各种程序分析算法在不同编译器内部重复设计和实现。虽然对编译内部框架结构表示进行了大量研究,但没有一种体系框架被广泛应用。这种情况下,为了实现程序分析和转换算法,就需要深入相应语言的编译器框架实现内部。由于编译器的内部实现复杂度高,使这一任务时间消耗量大而效果低下。二是传统编译器内部的程序分析框架缺少同时支持静态分析和动态分析的能力。程序分析算法是在编译器解析技术基础之上利用解析所获取的信息进行分析的,而通过解析程序文本获取的只是程序的静态信息。现有的编译体系框架引起了静态分析算法和动态信息获取需要分开实现,系统组件重复开发而且效率低下。 针对以上所提到的两个问题,本文提出了一种基于中间格式表示的可复用程序分析系统:COA编译优化辅助系统(Compiler Optimization Auxiliary)。COA是一个不依赖于具体编译器框架的可复用程序分析系统,以中间格式表示为核心,实现了语言独立的编译前端和同时支持动静态程序分析的后端。为了把程序分析算法同编译器内部表示分离开来,在语言的编译前端和程序分析算法的后端之间引入中间格式表示;为了实现支持多种语言的程序分析系统,COA系统采用统一的中间格式表示,把多种语言转换成相同的中间格式表示;为了同时支持动静态程序分析,在中间格式中引入了动静态程序分析需要的相应功能接口;为了实现复用的过程,在中间格式的基础上建立了控制流和指令插桩等基础程序分析组件。综合这些技术,建立了一个类似于重定位式编译器的系统,解决了程序分析系统重复开发和缺乏同时支持动静态程序分析能力的问题。 为了验证COA系统具体功能,我们对COA进行应用实例分析,建立不同的实验场景,针对COA系统的不同方面进行测试。为了验证静态程序分析能力,基于COA建立程序控制流图,构造函数调用图作为静态程序分析的支持平台,实现了静态的别名分析过程;为了验证动态程序分析能力,实验以源代码级的指令插桩为中心,实现循环不变量的探测和分支计数的过程。这些应用取得了比较理想的测试效果。 本文的研究工作为复用程序分析系统提供了一个新的解决方法与思路。COA系统可以针对程序分析技术的不同需求进行可重定位式的解决方案,提高了程序分析系统的开发效率,对以后的程序分析技术具有一定的应用参考价值。 |
语种 | 中文 |
公开日期 | 2011-03-17 |
页码 | 65 |
内容类型 | 学位论文 |
源URL | [http://ir.iscas.ac.cn/handle/311060/6498] ![]() |
专题 | 软件研究所_中科院软件所_中科院软件所 |
推荐引用方式 GB/T 7714 | 郑瑶海. 一种基于中间格式表示的可复用程序分析系统[D]. 软件研究所. 中国科学院软件研究所. 2006. |
个性服务 |
查看访问统计 |
相关权益政策 |
暂无数据 |
收藏/分享 |
除非特别说明,本系统中所有内容都受版权保护,并保留所有权利。
修改评论