spim is a self-contained software simulator for running R2000/R3000 assembly language programs. It reads and can immediately execute files containing assembly language code. spim also provides a debugger and simple set of operating system services. spim provides both a simple, textual interface and a fancier, graphical interface. The package includes complete source code and documentation.
Turing Machine (C++ Implementation) is a Turing machine simulation that is defined by a series of input files. These include a metafile containing data related to some Turing machine, a states file containing a list of initial, halting, and internal states, an alphabet file of empty, input, and internal symbols, a transition file of transition rules, and input word files, which detail the input given on a tape.
KMD is a multi-processor debugger. It can debug with hardware boards over serial ports or with software emulators (ARM and MIPS emulators are included in the project). Using the pipe option you can debug over the network or any other communication medium. It can load many executable formats such as ELF, and display and follow the original source even from multiple source file programs. There is support for breakpoints and watchpoints which can trap on specific data (such as loading or executing specific instructions). Support for other features such as FPGA's is also available, allowing loading or any control required to drive a specific hardware device. The project uses chump to allow disassembly and line assembly. Chump also allows new architectures to be easily added without the need to recompile the system. Communication with the backend is done using two pipes/fifos using a simple set of codes. Back end communication program can be created using very little memory on the target device.
Yet Another Machine Simulator (YAMS) is a simple yet realistic machine simulator, which is mainly aimed for teaching purposes on operating systems courses. It simulates one or more MIPS32 CPUs and I/O devices such as disks, terminals, and network cards. Additional devices can be implemented as separate programs that use its I/O plugin interface. The device properties are very configurable. High performance was not a priority factor in its implementation since the main purpose is educational, so YAMS is not an answer for people looking for a fast MIPS emulator/simulator.