X86 instruction semantics and basic block symbolic execution (Q7361097)

From MaRDI portal

!

This is the item page for this Wikibase entity, intended for internal use and editing purposes. Please use the normal view instead:

AFP entry X86_Semantics
Language Label Description Also known as
default for all languages
No label defined
    English
    X86 instruction semantics and basic block symbolic execution
    AFP entry X86_Semantics

      Statements

      13 October 2021
      0 references
      Freek Verbeek
      0 references
      Abhijith Bharadwaj
      0 references
      Joshua Bockenek
      0 references
      Ian Roessle
      0 references
      Timmy Weerwag
      0 references
      Binoy Ravindran
      0 references
      X86 instruction semantics and basic block symbolic execution (English)
      0 references
      This AFP entry provides semantics for roughly 120 different X86-64 assembly instructions. These instructions include various moves, arithmetic/logical operations, jumps, call/return, SIMD extensions and others. External functions are supported by allowing a user to provide custom semantics for these calls. Floating-point operations are mapped to uninterpreted functions. The model provides semantics for register aliasing and a byte-level little-endian memory model. The semantics are purposefully incomplete, but overapproximative. For example, the precise effect of flags may be undefined for certain instructions, or instructions may simply have no semantics at all. In those cases, the semantics are mapped to universally quantified uninterpreted terms from a locale. Second, this entry provides a method to symbolic execution of basic blocks. The method, called “ se_step ” (for: symbolic execution step) fetches an instruction and updates the current symbolic state while keeping track of assumptions made over the memory model. A key component is a set of theorems that prove how reads from memory resolve after writes have occurred. Thirdly, this entry provides a parser that allows the user to copy-paste the output of the standard disassembly tool objdump into Isabelle/HOL. A couple small and explanatory examples are included, including functions from the word count program. Several examples can be supplied upon request (they are not included due to the running time of verification): functions from the floating-point modulo function from FDLIBM, the GLIBC strlen function and the CoreUtils SHA256 implementation.
      0 references