共查询到19条相似文献,搜索用时 78 毫秒
1.
Java语言中数组越界故障的静态测试研究 总被引:1,自引:0,他引:1
面向具体故障的软件测试技术是当今一个研究热点。数组越界是Java程序设计中的常见故障,该类故障极易导致计算结果错误或系统崩溃。针对Java语言中常见数组越界故障进行了分析,并从面向具体故障的测试思想出发,建立了Java语言中数组越界的故障模型,结合静态测试的特点,给出了一种静态查找此类故障的方法。此方法已实现,并已应用于面向故障的软件测试系统中。 相似文献
2.
在许多程序设计中都要用到多维数组,如果数组每一维的大小都已知,则在变量说明中定义即可,否则,通常的方法是在变量说明中按最大值来定义数组,这样会浪费内存,且有时该最大值也很难确定。在此介绍一种在C程序中动态生成多维数组的方法,该法可有效地解决上述问题。 相似文献
3.
基于类型注解的认证编译器设计与实现 总被引:2,自引:0,他引:2
基于类型注解的认证编译器是安全策略系统的核心部件,它不仅能够用C语言的类型安全子集编写的程序编译成优化的Intel x86/linux汇编语言程序,而且还可以根据类型安全策略的要求产生带注解的汇编程序.实验结果表明,新设计的认证编译器可实现:①类型安全的C语言子集的编译;②许多标准的局部优化;③可以对数组运行时越界操作进行检查.由于安全策略系统的证明是建立在含注解的代码基础之上的,因此,该认证编译器在移动代码安全检查中非常有用。 相似文献
4.
5.
舒燕君;郑翔宇;徐成华;黄沛;王永琪;周凡;张展;左德承 《计算机研究与发展》2025,62(5):1136-1150
为了减少内存安全检查的开销,LoongArch指令集架构引入了边界检查访存类指令.然而,作为一种新的内存访问指令,目前GCC(GNU compiler collection)编译器不支持该类指令,LoongArch硬件能力不能得到充分利用.针对此LoongArch边界检查访存指令改进了GCC编译器,实现利用该类指令优化程序的内存安全检查.具体而言,完成了3个方面的工作:1)设计实现了针对边界检查访存指令的内建函数;2)改进GCC RTL(register transfer language)阶段的优化器,使其能够识别无异常处理和带异常处理2种情况的边界检查访存语义,并自动优化;3)面向LoongArch边界检查访存指令触发的边界检查异常(bound check exception,BCE),设计了新的Linux内核异常信号SIGBCE和相应的运行时库glibc(GNU C library)的信号处理函数,实现了BCE处理.通过在GCC 12.2.0和龙芯3C5000L服务器进行实验,验证了改进后的编译器不仅能正确使用新引入的边界检查访存指令,而且在某些安全函数中带来接近20%的性能提升.完善了LoongArch生态,推进了LoongArch指令集发展,对此类特定指令编译器优化工作有一定的借鉴意义. 相似文献
6.
7.
数据预取技术是为缓解微处理器与DRAM之间速度差异而出现的隐藏访存延迟的方法。GCC作为广泛使用的开源编译器,在tree-ssa上对循环级数组实现了预取优化。在深入分析GCC4.9循环级数组预取的基本实现机制,以及剖析基于预取收益和分析时间的三种不予预取的代价模型的基础上,得出影响循环数组预取效果的几个因素,并针对典型测试用例测试了GCC编译器循环数组预取的效果。此项工作对于改进和提高GCC现有循环级数组的预取优化有指导意义。 相似文献
8.
9.
引言 随着DSP技术的不断发展和完善,数字信号处理的应用范围越来越广泛。工控、计算机、通信和消费电子产品中,都会找到它的影子。到了20世纪80年代后期,各个DSP的生产商都推出了自己的高级语言编译器。这使得利用高级语言开发DSP软件成为可能。 相似文献
10.
C语言中指针、数组和函数的综合应用与实例解析 总被引:1,自引:0,他引:1
概述了C语言中指针、数组和函数的有关概念;结合教学实例,对指针的运算及其在数组操作和函数功能实现中的应用,以及三者的综合应用方法与技巧进行了探讨和分析。 相似文献
11.
携带证明代码允许代码消费方通过检查代码生产方提供的证明,来判断代码是否满足相应的安全规范.本文实现了一个类C语言的出具证明编译器原型,它在将带有规范标注的源代码编译成汇编代码的同时,还能产生汇编代码满足相应规范的Coq可检查证明,从而保证汇编代码的安全性.本文设计了一种Hoare风格的汇编级验证框架,并在此框架下提出并实现一种新的自动生成汇编级断言和证明的方法. 相似文献
12.
出具证明编译器在软件安全研究得到越来越多的关注,是程序验证研究的一个重要方向.但目前关于出具证明编译器的研究主要是在程序逻辑设计和定理自动化证明方面,很少关注编译优化对规范的影响.而编译优化是决定出具证明编译器是否能走向应用的关键因素之一.通过研究数据流优化的基本行为,提出利用数据流分析结果来变换规范的方法,以使原规范的约束准确而充分地施加于优化后的代码,并实现了一个包含多种优化和相应规范转换的编译器原型系统,展示了方法的可行性. 相似文献
13.
This paper proposes a new proof-based approach to safe evolution of distributed software systems. Specifically, it extends the simple certification mechanism of proof-carrying code (PCC) to make it interactive and probabilistic, thereby devising interactive proof-carrying code (iPCC). With iPCC, a code consumer is convinced, with overwhelming probability, of the existence and validity of a safety proof of a transmitted code through interaction with a code producer. The iPCC mechanism theoretically solves the problem of proof explosion with PCC and can be used to efficiently prove a greater variety of safety properties that may require longer proofs. Technically, the class (PSPACE) of safety properties that are efficiently provable by iPCC is larger than the class (NP) efficiently provable by PCC. To illustrate the power of iPCC, this paper demonstrates that the verification of certain basic safety properties of typical machine instruction codes needs co-NP-complete computation, and shows how these safety properties can be efficiently verified by the iPCC mechanism.This is an extended and revised version of Tsukada (2001a), which appeared in the Proceedings of the 2000 International Symposium on Principles of Software Evolution. A preliminary version was also presented at the International Conference on Advances in Infrastructure for Electronic Business, Science, and Education on the Internet (Tsukada, 2001b). 相似文献
14.
A certifying compiler takes a source language program and produces object code, as well as a certificate that can be used to verify that the object code satisfies desirable properties, such as type safety and memory safety. Certifying compilation helps to increase both compiler robustness and program safety. Compiler robustness is improved since some compiler errors can be caught by checking the object code against the certificate immediately after compilation. Program safety is improved because the object code and certificate alone are sufficient to establish safety: even if the object code and certificate are produced on an unknown machine by an unknown compiler and sent over an untrusted network, safe execution is guaranteed as long as the code and certificate pass the verifier.Existing work in certifying compilation has addressed statically generated code. In this paper, we extend this to code generated at run time. Our goal is to combine certifying compilation with run-time code generation to produce programs that are both fast and verifiably safe. To achieve this goal, we present two new languages with explicit run-time code generation constructs: Cyclone, a type safe dialect of C, and TAL/T, a type safe assembly language. We have designed and implemented a system that translates a safe C program into Cyclone, which is then compiled to TAL/T, and finally assembled into executable object code. This paper focuses on our overall approach and the front end of our system; details about TAL/T will appear in a subsequent paper. 相似文献
15.
Martin Wildmoser Amine Chaieb Tobias Nipkow 《Electronic Notes in Theoretical Computer Science》2005,141(1):19
Out of annotated programs proof carrying code systems construct and prove verification conditions that guarantee a given safety policy. The annotations may come from various program analyzers and must not be trusted as they need to be verified. A generic verification condition generator can be utilized such that a combination of annotations is verified incrementally. New annotations may be verified by using previously verified ones as trusted facts. We show how results from a trusted type analyzer may be combined with untrusted interval analysis to automatically verify that bytecode programs do not overflow. All trusted components are formalized and verified in Isabelle/HOL. 相似文献
16.
GCC是基于Linux下的开放源码的优化编译系统,可以接收多种高级源语言,广泛支持多平台操作系统。其代码优化机制,不仅能兼顾时间、空间效率,生成高质量的目标代码,而且具有很强的可移植性与可扩充性,是编译器优化研究的目标。通过对GCC的整体结构、优化策略、优化方法与关键技术、中间语言等进行详细的剖析,抽取出完整的GCC优化体系结构。文中集中探讨了GCC的优化策略和实现技术,首先从GCC优化体系的总体规划入手,着重分析了GCC的优化组织策略,设计、引入中间代码RTL的技巧和内涵,进一步研究了GCC所涉及的控制流分析技术、数据流分析技术的实现机制。 相似文献
17.
汇编代码验证中的形式规范自动生成 总被引:2,自引:0,他引:2
与传统的高级语言程序验证相比,汇编代码验证中所需要的形式规范往往比较复杂,通常的做法是要求程序员手写形式规范,或是牺牲形式规范的表达能力以期能够自动生成规范.本文提出一种能够自动生成形式规范的方法,该方法依托一个出具证明的编译器自动生成汇编级形式规范,从而减轻程序员的负担.使用该方法生成的规范比现有的其他方法自动生成的规范具有更强的表达能力.文章主要描述该方法在出具证明编译器中的实现. 相似文献
18.
近年来,出具证明编译器作为构建高可信软件的重要途径,逐渐成为编译器理论和形式化验证的研究热点.在其理论框架中,编译器需要借助自动定理证明技术,自动地证明验证条件并生成机器可检查的证明项,因此好的自动定理证明器对出具证明编译器至关重要.本文基于Simplex算法在出具证明编译器的框架内设计并实现了一个支持线性整数命题求解的自动定理证明器,并且提出一套证明项构造方法,将其应用于自动定理证明器中可生成Coq可检查的证明. 相似文献
19.
动态二进制翻译器在运行时将源体系结构机器码翻译为目标体系结构机器码.这种即时编译技术使得源机器上的软件无需重编译就可以直接在目标机上较高效地运行.然而,利用动态二进制翻译器运行源软件的效率大大低于针对目标机器重新编译运行源软件的效率.本文在比较分析动态翻译生成的目的机器码的性能偏低的原因的基础上,提出了注解信息制导的动态二进制翻译及优化的方法.本文选取了三种注解信息,在英特尔的商用动态二进制翻译器"IA-32Execution Layer"和静态编译器"Intel(r)Compiler"上实现了注解信息制导的动态二进制编译及优化技术.实验结果表明该三种注解信息较大程度地提高了动态翻译码的执行效率. 相似文献