GNU MIX Development Kit (MDK)
• What is
• What is GNU
• Downloading the stable release
• Hacking the development source tree
MIX is Donald Knuth's mythical computer as
described in his monumental work
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
- gmixvm A MIX virtual machine with a GTK+ GUI
which allows you running and debugging your MIXAL programs
through a nice graphical interface
- mixguile A Guile interpreter with an embedded MIX
virtual machine, manipulable through a library of Scheme
- 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.
In addition, the MIX virtual machine simulators include an
interpreter and, therefore, their functionality can be extended
See the GNU MDK user's
manual for a complete description of the toolkit. The MDK
suite will run on any GNU or FreeBSD box
platforms) and, of course,
is free software.
The GNU MDK source tarball can be found at
GNU's FTP site
(or any of its mirrors).
part of the Debian GNU/Linux distribution
and can be installed using apt-get. Fink packages (for the
are also available.
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.
As of March 2008, the source tree of MDK is maintained in
a git repository
with the following coordinates:
- 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
For more information on using git,
Savannah help page.