GNU MIX Development Kit (MDK)
• What is
MIX/MIXAL?
• What is GNU
MDK?
• Downloading the stable release
• Hacking the development source tree
• Exit
points
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.
In addition, the MIX virtual machine simulators include an
embedded Guile
interpreter and, therefore, their functionality can be extended
using Scheme.
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
(see suported
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).
MDK is
part of the Debian GNU/Linux distribution
and can be installed using apt-get. Fink packages (for the
CLI
and GUI)
and
a MacPort
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
at Savannah
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,
see this
tutorial
or this
Savannah help page.