| # 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. |