The x86isa Books: Features, Usage, and Future Plans

  title={The x86isa Books: Features, Usage, and Future Plans},
  author={Shilpi Goel},
  • Shilpi Goel
  • Published in ACL2 3 May 2017
  • Computer Science
The x86isa library, incorporated in the ACL2 community books project, provides a formal model of the x86 instruction-set architecture and supports reasoning about x86 machine-code programs. However, analyzing x86 programs can be daunting -- even for those familiar with program verification, in part due to the complexity of the x86 ISA. Furthermore, the x86isa library is a large framework, and using and/or contributing to it may not seem straightforward. We present some typical ways of working… 

Adding 32-bit Mode to the ACL2 Model of the x86 ISA

This paper reports on the work to extend the 64-bit model of the x86 ISA with 32-bit support, where all the non-floating-point instructions in the 64/bit model have been extended from 64 bits to 32 bits; furthermore, a few32-bit-only instructions have been added.

ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures

This paper establishes a robust model for one aspect of system semantics: instruction fetch and cache maintenance for ARMv8-A and brings subtle issues into the mathematical domain, clarifying the architecture and enabling future work on system software verification.

Detailed Models of Instruction Set Architectures : From Pseudocode to Formal Semantics

Sail aims to portably generate usable theorem prover definitions for multiple provers, including Isabelle, HOL4, and Coq, focusing on the full ARMv8.3-A specification, CHERI-MIPS, and RISC-V, together with fragments of IBM POWER and x86.

A Survey on Theorem Provers in Formal Methods

In this work, more than 40 theorem provers are studied in detail and compared to present a comprehensive analysis and evaluation of these tools.

Adding 32-bit Mode to the ACL2 Model of the x86 ISA

This paper reports on the work to extend the ACL2 model of the x86 Instruction Set Architecture with support for 32-bit mode, recounting the salient aspects of this activity and identifying the ones that required the most work.



Single-Threaded Objects in ACL2

This work provides "singlethreaded objects," structures with the usual "copy on write" applicative semantics but for which writes are implemented destructively.

A formal model of a large memory that supports efficient execution

This work presents a memory model written in the ACL2 logic, with both reasoning support and a runtime environment, that provides a space-efficient implementation for an address space of 248 bytes, and is used in the development of an ISA model for x86 instructions.

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

This work adds support for system calls to their formal, executable model of the user-level x86 instruction-set architecture (ISA), and is the first that enables mechanical proofs of functional correctness of user- level x86 machine-code programs that make system calls.

Pin: building customized program analysis tools with dynamic instrumentation

The goals are to provide easy-to-use, portable, transparent, and efficient instrumentation, and to illustrate Pin's versatility, two Pintools in daily use to analyze production software are described.

Engineering a Formal, Executable x86 ISA Simulator for Software Verification

This work describes a formal, executable model of the x86 instruction-set architecture and presents design decisions made during model development to optimize both validation and verification, i.e., efficiency of both simulation and reasoning.

Automated Code Proofs on a Formal Model of the X86

This work describes an approach to automatically verify some X86 binary programs using symbolic execution on an executable formal model of the X86 instruction set architecture that can reduce the time and effort involved in the proof development process for complex programs.

QEMU, a Fast and Portable Dynamic Translator

  • Fabrice Bellard
  • Computer Science
    USENIX Annual Technical Conference, FREENIX Track
  • 2005
QEMU supports full system emulation in which a complete and unmodified operating system is run in a virtual machine and Linux user mode emulation where a Linux process compiled for one target CPU can be run on another CPU.

Abstract Stobjs and Their Application to ISA Modeling

A new ACL2 feature, the abstract stobj, is introduced, and how to apply it to modeling the instruction set architecture of a microprocessor is shown.

Efficient Rewriting of Operations on Finite Structures in ACL2

The deenitions of the access and update functions are somewhat subtle, complex, and ineeecient, but they return the expected values and the theorems exported are elegant and eecient for automatic, unconditional rewriting.

Proof Styles in Operational Semantics

Two well-studied methodologies in deductive verification of operationally modeled sequential programs, namely the use of inductive invariants and clock functions, are related and one can mechanically transform a proof of a program in one methodology to a proof in the other.