[发明专利]一种基于信息流分析的LLVM中间表示程序切片方法有效
申请号: | 201710089472.2 | 申请日: | 2017-02-20 |
公开(公告)号: | CN106951303B | 公开(公告)日: | 2020-09-22 |
发明(设计)人: | 张迎周;徐晨晨;闫丽;吴寄语 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 许方 |
地址: | 210003 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 信息 分析 llvm 中间 表示 程序 切片 方法 | ||
本发明公开了一种基于信息流分析的LLVM中间表示程序切片方法。首先,根据调用图CG判断某程序是过程内程序还是过程间程序。所述的过程间程序采用以下步骤:(1)分析程序间的调用关系、实参与形参之间的对应关系;(2)根据公式计算每条调用语句的DS、PS、λS、μS、ρS;(3)再根据CG调用图的逆拓扑序关系来依次分析各个程序,得到过程间程序的DS、PS、λS、μS、ρS;(4)对所有程序的DS、PS、λS、μS、ρS进行复合,得到过程间切片。本发明方法,可对LLVM IR程序类中间语言程序进行切片,通用性强,切片精度高。
技术领域
本发明涉及软件分析技术领域,涉及一种程序切片方法,特别是一种基于信息流分析的LLVM中间表示程序切片方法。
背景技术
随着计算机技术的迅猛发展,软件系统的数量与规模在不断扩大,复杂程度也伴随着软件系统的进步而越来越高,应运而生的程序分析技术已经成为了软件领域中非常重要的组成部分。
在各种程序分析技术中,程序切片是其中一项非常重要的技术。程序切片是一种程序分解技术,即一种程序分析理解方法。程序切片技术及其分析方法现已广泛应用于实际的生产和研究、以及在对程序的分析理解、调试和测试等领域,并且,对软件系统的维护和度量等方面也提供了技术上的支持。在实际的程序开发和维护过程中,程序切片技术可以帮助开发和测试人员更好的理清程序结构和作用,创造出更优质和简化的程序,大大提高了工作的效率。
Mark Weiser等人曾发现,程序的某一个输出只与源程序中部分语句有关,删除其它的语句并不影响该输出的结果。他们把这种只与某个输出有关的语句构成的程序称为源程序的一种静态切片,并提出了基于控制流图(CFG)的程序切片算法。Ottenstein等人引入了基于程序依赖图(PDG)的图形可达性算法,以此来计算过程内程序切片。Horwitz等人随后提出了基于系统依赖图(SDG)的两阶段图形可达性算法(简记为HRB算法)。多年来,人们对程序切片进行了广泛而深入的研究,取得了许多研究成果,使得它在软件调试、测试、维护、度量、程序并行化、软件逆向工程与再生工程等方面得到广泛应用,因而也受到了广大软件研究、开发人员的高度重视。
虽然人们已提出了多种程序切片方法,但是,切片的对象一般都是C、C++、Python等某种特定语言编写的程序,而且通用性差,切片精度不理想。LLVM IR是一种介于c语言和汇编语言的格式,既有高级语言的可读性,又能比较全面地反映计算机底层数据的运算和传输的情况,精炼而又高效。LLVMIR的设计分为三个阶段:前端、优化和后端。如果需要支持一种新的编程语言,那么仅需要实现一种新的前端。如果需要支持一种新的硬件设备,则只需要实现一个新的后端。而优化阶段因为是针对了统一的LLVM IR,所以它是一个通用的阶段,不论是支持新的编程语言,还是支持新的硬件设备,都无需对优化阶段做修改。由此可以看出LLVM IR的作用。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于信息流分析的LLVM中间表示程序切片方法,可对LLVM IR程序类中间语言程序进行切片,通用性强,切片精度高。
为解决现有技术的上述技术问题,本发明采用以下技术方案。
本发明的一种基于信息流分析的LLVM中间表示程序切片方法,其特征在于,包括以下过程:
(1)根据调用图CG判断预切片程序是过程内程序还是过程间程序;
(2)所述预切片程序为过程内程序,其步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710089472.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电厂锅炉尾气SO3脱除系统
- 下一篇:一种二苯甲酮生产制备用氯化氢吸收装置
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置