Simulation and formal verification of x86 machine-code programs that make system calls.

FMCAD '14: Proceedings of the 14th Conference on Formal Methods in Computer-Aided Design(2014)

引用 25|浏览13
暂无评分
摘要
We present an approach to modeling and verifying machine-code programs that exhibit non-determinism. Specifically, we add support for system calls to our formal, executable model of the user-level x86 instruction-set architecture (ISA). The resulting model, implemented in the ACL2 theorem-proving system, allows both formal analysis and efficient simulation of x86 machine-code programs; the logical mode characterizes an external environment to support reasoning about programs that interact with an operating system, and the execution mode directly queries the underlying operating system to support simulation. The execution mode of our x86 model is validated against both its logical mode and the real machine, providing test-based assurance that our model faithfully represents the semantics of an actual x86 processor. Our framework is the first that enables mechanical proofs of functional correctness of user-level x86 machine-code programs that make system calls. We demonstrate the capabilities of our model with the mechanical verification of a machine-code program, produced by the GCC compiler, that computes the number of characters, lines, and words in an input stream. Such reasoning is facilitated by our libraries of ACL2 lemmas that allow automated proofs of a program's memory-related properties.
更多
查看译文
关键词
instruction sets,machine code listings,operating systems (computers),program compilers,program verification,theorem proving,ACL2,GCC compiler,ISA,formal analysis,formal verification,instruction-set architecture,operating system,program verification,system calls,theorem-proving system,x86 machine-code programs,x86 processor,
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要