出具证明编译器中验证条件化简和编译优化的研究

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:vict1234
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序验证用逻辑证明的方法证明程序满足其规范,是实现安全性的重要方法。出具证明编译器(Certifying Compiler)是编译器与验证器的结合。本文描述的出具证明编译器项目CComp让用户给出描述程序正确性的规范,并在源代码使用霍尔逻辑风格的推理规则产生验证条件(Verification Condition,VC),经由证明器证明后产生证明项。然后将源代码和规范转化成底层的汇编代码和其上的规范,并利用源级证明项生成汇编代码级证明,最终生成携带证明代码。    CComp由多人协作完成,本人承担项目中的断言语言设计以及验证条件生成和化简工作。实验室先前的项目PointerC[4],过大的验证条件规模成为系统性能的瓶颈。因此CComp采用一系列的措施来化简VC,删除其中的冗余。   实用的编译器会包含众多优化,以提高程序执行的效率。编译优化是一系列程序变换,对于出具证明编译中包含规范的程序,变换前的程序的规范可能无法正确或充分地描述变换后的程序,为此程序规范也应该随着代码优化一起转换。目前关于出具证明编译器的项目较少研究编译优化的影响,但编译优化是决定出具证明编译器是否能走向应用的关键因素之一。   本文通过分析研究,针对以上两个重要问题分别提出了相应的解决方案,并实现了原型系统验证方法的合理性。本文的主要贡献为:   1.为CComp项目设计了使用分离逻辑描述的断言语言和其推理规则,实现了相应的验证条件生成器;设计并实现了一个重写系统,实现了验证条件的化简,解决了验证条件过大的问题。   2.通过研究数据流优化的基本行为,实现了一个包含多种优化和相应规范转换的编译器原型系统,利用数据流分析结果来变换规范,使各循环的循环不变式经过调整后,能作为优化后程序的相应循环的循环不变式。并初步总结出了通用的转换模式。   本文第一部分工作是CComp项目的一部分。第二部分工作则较为独立,可作为未来对包含代码优化的出具证明编译器的研究基础。  
其他文献
在20世纪90年代提出推荐系统的概念之后,经过十多年的发展,推荐系统已经被应用到了许多大型电子商务系统中。在对推荐系统的研究中,如何对现有系统中的推荐算法进行改进,以及
网格计算作为一种新型的大型分布式计算,从其提出到现在一直受到了学术界和工业界极大的关注。随着网格技术的不断发展,网格已逐步发展细化为计算网格、数据网格、服务网格以
医学图像可视化技术是当今计算机科学研究的一个热点,它能弥补医疗影像设备在成像上的不足,为医生提供具有真实感的三维图像,便于医生从多层次、多方位观察与分析,引起了越来
访问控制策略有效地保障了信息系统的安全性,它是指实施允许被授权的主体对某些客体的访问,同时拒绝向非授权的主体提供服务的策略。随着信息化步伐的加快和计算机技术的发展
随着计算机科学的迅速发展,软件规模日益庞大。现在人们在考虑软件执行效率的同时,也越来越关注其安全性(Safety)。高可信软件的研究致力于使用前沿的技术和工具来提高计算机
深度学习作为机器学习领域的一个重要研究方向,在近年来发展迅速。深度学习的主要思想是通过构建多层的深度网络结构,使用高效的算法逐级提取数据的高级特征,来完成多种无监
SOA(Service Oricented Architecture面向服务的架构)基于这样的理念:将业务功能作为一系列的服务而提供,并将这一系列服务组装起来的解决方案来满足特定业务需求。SCA(Service
计算机支持的协同设计(Computer Supported Collaborative Design,CSCD)已经成为网络环境下数字化设计与制造的关键技术之一,能够较大幅度地缩短产品设计周期,降低产品开发成
随着Web服务技术的发展,越来越多的服务提供方以Web服务形式提供服务,当单个简单Web服务无法满足需求时,需要组合多个Web服务来完成,在组合过程中如何高效准确组合现有服务成
移动增值业务结合了互联网与移动通信的技术优势,在满足人们随时随地获取信息需求的同时,还可以提供除语音业务外的多媒体业务、交互式数据业务、电子商务等其它丰富的业务应