GNU MIX Development Kit (MDK)
MIX is Donald Knuth's mythical computer as described in his monumental work The Art Of Computer Programming. As any of its real counterparts, the MIX features registers, memory cells, an overflow toggle, comparison flags, input-output devices, and a set of binary instructions executable by its virtual CPU. You can program the MIX using an assembly language called MIXAL, the MIX Assembly Language.
So, what's the use of learning MIXAL? The MIX computer is a simplified version of real CISC computers, and its assembly language closely resembles real ones. You can learn MIX/MIXAL as an introduction to computer architecture and assembly programming: see the MDK documentation for a tutorial on MIX and MIXAL.
MDK (MIX Development Kit) offers an emulation of MIX and MIXAL. The current version of MDK includes the following applications:
- mixasm A MIXAL compiler, which translates your source files into binary ones, executable by the MIX virtual machine.
- mixvm A MIX virtual machine which is able to run and debug compiled MIXAL programs, using a command line interface with readline's line editting capabilities.
- gmixvm A MIX virtual machine with a GTK+ GUI which allows you running and debugging your MIXAL programs through a nice graphical interface (see screenshots).
- mixguile A Guile interpreter with an embedded MIX virtual machine, manipulable through a library of Scheme functions.
- mixal-mode.el An Emacs major mode for MIXAL source files editing, providing syntax highlighting, documentation lookup and invocation of mixvm within Emacs (since version 22, mixal-mode is part of the standard Emacs distribuition).
- mixvm.el An elisp program which allows you to run mixvm within an Emacs GUD window, simultaneously viewing your MIXAL source file in another buffer.
Using the MDK tools, you'll be able to
- write, compile and execute MIXAL programs,
- set breakpoints and run your programs step by step,
- set conditional breakpoints (register change, memory change, etc.),
- collect execution timing statistics,
- trace executed instructions,
- inspect and modify the MIX registers, flags and memory contents at any step,
- simulate MIX input-output devices using the standard output and your file system.
The user's manual is distributed with the source tarball in texinfo format, which is converted to info files during the installation process. It is also available in a variety of formats in the documentation section.
- Repository: git://git.sv.gnu.org/mdk.git
- Development branch: master
- Online access here
You can get the sources using the following incantation:
git clone git://git.sv.gnu.org/mdk.git
or, for those of you behind a firewall,
git clone http://git.sv.gnu.org/r/mdk.git