GNU MIX Development Kit (MDK)

What is MIX/MIXAL?

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.

What is GNU MDK?

MDK (MIX Development Kit) offers an emulation of MIX and MIXAL. The current version of MDK includes the following applications:

Using the MDK tools, you'll be able to

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.

Downloading stable releases

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.

The development source tree

As of March 2008, the source tree of MDK is maintained in a git repository at Savannah with the following coordinates:

You can get the sources using the following incantation:

    git clone git://

or, for those of you behind a firewall,

    git clone

For more information on using git, see this tutorial or this Savannah help page.

Further links