Skip to content
STIMSMITH

exec_instr function

CodeArtifact

The `exec_instr` function is a generated ML/SML function in the VAMP processor model. It executes a single VAMP instruction over a processor-state value, returning the updated state, and is used as the model-side reference in HOL-TestGen unit and sequence test specifications.

First seen 5/26/2026
Last seen 5/26/2026
Evidence 5 chunks
Wiki v1

WIKI

Overview

exec_instr is a function exposed by the generated ML code for the VAMP processor model. Its signature is:

val exec_instr : unit aSMcore_t_ext -> instr -> unit aSMcore_t_ext
READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

3 connections
VAMP assembler model (Isabelle/HOL) part of → 100% 1e
The exec_instr function is part of the VAMP assembler model.
execVAMP function ← uses 100% 1e
execVAMP is a lifting of exec_instr into the state exception monad.
VAMP SML executable model part of → 100% 1e
The SML executable model contains the exec_instr function.

CITATIONS

8 sources
8 citations — click to expand
[1] The generated VAMP ML/SML interface exposes `exec_instr` with type `unit aSMcore_t_ext -> instr -> unit aSMcore_t_ext`, alongside `instr`, helper functions, `sigma_0`, and `execInstrs`. Test Program Generation for a Microprocessor: A Case Study
[2] The VAMP `instr` datatype and function definitions in the ML code are generated from the formal model definitions. Test Program Generation for a Microprocessor: A Case Study
[3] `exec_instr` is used in a unit-test specification of the form `test_spec pre σ ι ==> SUT σ ι =k exec_instr σ ι`, where `=k` compares registers and the top `k` memory cells and `SUT` is replaced during test execution. Test Program Generation for a Microprocessor: A Case Study
[4] For load/store unit testing, the `is_load_store` predicate restricts the test domain, and HOL-TestGen produced eight symbolic test cases for the load/store operations. Test Program Generation for a Microprocessor: A Case Study
[5] `exec_instr` is lifted into the state-exception monad by `execVAMP`, defined as `λ i σ. Some ((), exec_instr σ i)`, for sequence testing. Test Program Generation for a Microprocessor: A Case Study
[6] Load/store instruction sequences can be tested by combining `list_all is_load_store`, `mbind`, `execVAMP`, and `assertSE` in a HOL-TestGen sequence specification. Test Program Generation for a Microprocessor: A Case Study
[7] Two HOL-TestGen scripts for load/store and arithmetic operation sequences each generated 585 test cases, and running them against the same executable model revealed no errors. Test Program Generation for a Microprocessor: A Case Study
[8] A mutant executable model was produced by modifying `int_add`, `int_sub`, and `cell2data`; arithmetic tests yielded 303 successes and 282 failures out of 585, and load/store tests yielded 54 successes and 531 failures out of 585. Test Program Generation for a Microprocessor: A Case Study