期刊文献+

栈指针程序的形式验证 被引量:2

Formal Verification of Stack Pointer Programs
下载PDF
导出
摘要 提出一种验证含栈指针、静态区指针操作的C语言程序的方法.该方法定义指针的三元属性表示一个指针的状态.指针的三元属性包括指针指向数据块的名称、数据块的长度以及指针在所指向数据块上的偏移.通过对Hoare逻辑的扩展,基于指针的三元属性设计了相应的断言演算规则和演算过程中生成验证条件的方法.该方法可以解决访问路径别名判断、指针越界访问检查、非法指针解引用检查等问题.该方法已经在一个基于演绎推理的安全C语言验证系统中实现,并且成功验证了教材上常用的一些经典算法. This paper proposes a method for verifying C programs involving operations of stack pointers and static area pointers. To represent the state of a pointer,the method defines the triple-attribute for it,which includes the name and size of the data block that the pointer points to, as well as the offset of the pointer on the data block. By extending Hoare logic, we have designed assertion calculus rules for generating verification conditions based on the triple-attribute. The method is capable of detecting path alias, wild pointer and illegal pointer de-reference. A verification system for C programs based on deductive reasoning has implemented the method and successfully implemented some classic algorithms in textbooks.
出处 《小型微型计算机系统》 CSCD 北大核心 2017年第5期936-940,共5页 Journal of Chinese Computer Systems
基金 国家自然科学基金项目(61170018 61229201)资助
关键词 程序验证 栈指针 静态区指针 路径别名 HOARE逻辑 program verification stack pointer static area pointer path alias Hoare logic
  • 相关文献

参考文献3

二级参考文献68

  • 1Hoare C A R. An axiomatic basis for computer programming [J]. Communications of the ACM, 1969, 12(10):576-585.
  • 2Paulson L C. Isabelle~ A Generic Theorem Prover [M]. Berlin: Springer, 1994:1-300.
  • 3The Coq Development Team. The Coq proof assistant reference manual, Version 8.2 lOLl. [2009-08-01]. http: //coq. inria, fr.
  • 4Aleksandar N, Morrisett G, Sbinnar A, et al. Ynot: Dependent types for imperative programs [C] //Proe of the 13th ACM SIGPLAN Int Conf on Functional Programming (ICFP'08). New York: ACM, 2008:229-240.
  • 5Barnett M, Rustan M, Leino M, et al. The spec programming system, An overview [G] //LNCS 3362: Proc of Int Workshop Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS 2004). Berlin: Springer, 2004: 49-69.
  • 6Flanagan C, Leino K R M, Lillibridge M, et al. Extended static checking for Java [C] //Proc of the Conf on Programming Language Design and Implementation (PLDI'02). New York. ACM, 2002: 234-245.
  • 7Berdine J, Calcagno C, O'Hearn P W. Smallfoot: Modular automatic assertion checking with separation logic [G] // LNCS 4111~ Proc of Formal Methods for Components and Objects(FMCO 2005). Berlin: Springer, 2005:115-137.
  • 8Distefano D, Parkinson M J. jStar: Towards practical verification for Java [C] //Proc of ACM SIGPLAN Int Conf on Object-Oriented Programming, Systems, Languages, and Applications(OOPSLA 2008). New York: ACM, 2008: 213-226.
  • 9Carter G, Monahan R, Morris J M. Software refinement with perfect developer [C] //Proc of the 3rd IEEE Int Conf on Software Engineering and Formal Methods(SEFM 2005). Piscataway, NJ: IEEE, 2005:363-372.
  • 10Reynolds J C. Separation logic: A logic for shared mutable data structures [C] //Proc of the 17th Annual IEEE Symp on Logic in Computer Science (LICS 2002). Piscataway, NJ: IEEE, 2002:55-74.

共引文献11

同被引文献5

引证文献2

二级引证文献1

相关作者

内容加载中请稍等...

相关机构

内容加载中请稍等...

相关主题

内容加载中请稍等...

浏览历史

内容加载中请稍等...
;
使用帮助 返回顶部