| # MPACT-Sim - Retargetable Instruction Set Simulator Infrastructure |
| |
| MPACT-Sim is a toolkit that reduces the effort to create instruction set |
| simulators, and make the resulting simulators easy to change and extend. |
| |
| This repository contains the C++ code for MPACT-Sim, tools and library support |
| for making it simple to create easily retargetable simulators for a wide range |
| of instruction set architectures. |
| |
| The toolkit consists of three major components. The first is the isa and binary |
| decoder generators, that take in descriptors of the isa and the binary encoding |
| of instructions and produce C++ code used in writing a decoder. The second is |
| the generic classes that implement the instruction objects, registers, and other |
| simulated state objects, and the code necessary to manipulate them, as well as |
| supporting writing the semantics of the instructions. Lastly, there are utility |
| classes that make it easier to put together a finished simulator, including |
| memory classes and an ELF loader. |
| |
| ## Building |
| |
| MPACT-Sim utilizes the [bazel](https://bazel.build/) build system. |
| |
| ## Directory Listing |
| |
| * mpact/sim/decoder <br /> |
| This directory contains the code that implements the tools |
| that parse `.isa` and `.bin_fmt` files, which define the |
| instructions and instruction encodings of an ISA, and generate C++ |
| code for the instruction decoder for an MPACT-Sim simulator. |
| |
| The tools are built automatically and the process is largly invisible when |
| using bazel with the appropriate build targets - see the tests in |
| mpact/sim/decoder/test for examples. |
| |
| * mpact/sim/generic <br /> |
| This directory contains alll the generic classes provided for use |
| in writing MPACT-Sim instruction set simulators. |
| |
| * mpact/sim/util <br /> |
| This directory contains code for a generic ELF program loader, and |
| for a set of classes that can be used to implement memories used in |
| an instruction set simulator. |