ARMv6-M
Overview
ARMv6-M is an ARM architecture profile targeted by embedded microcontrollers. Within the ExactStep project, ARMv6-M is one of the multi-target instruction set architectures that the simulator can emulate, alongside RISC-V (RV32IMAC, RV64IMAC) and MIPS (mips-i).
The ExactStep README describes ARMv6-M support as part of its broader goal of providing a simple, multi-target instruction-accurate simulator, with the emphasis on ease of extension and use as a library for cosimulation, peripheral development, and System-C bus interfacing rather than on raw execution performance.
Selection in ExactStep
ARMv6-M is selected through ExactStep's command line interface using the --march (short form -m) option, which accepts a machine variant string. The README illustrates this with armv6 as one of the example MISA values (alongside RV32IMAC, RV64I, and mips). ExactStep executes one instruction per call to cpu::step(), and supports running bare-metal executables compiled for the selected ISA.
Supported Architectures in ExactStep (for context)
| Architecture | Example --march value |
|---|---|
| RISC-V 32-bit | RV32IMAC |
| RISC-V 64-bit | RV64I |
| ARMv6-M | armv6 |
| MIPS | mips |
Relationship to ExactStep
ARMv6-M is an ISA that ExactStep implements as a software simulation target. The simulator is designed to be extensible, and ARMv6-M is among the architectures it currently models.