In his book series The Art of Computer Programming (published by Addison Wesley), D. Knuth uses an imaginary computer, the MIX, and its associated machine-code and assembly languages to illustrate the concepts and algorithms as they are presented.
The MIX’s architecture is a simplified version of those found in real CISC CPUs, and the MIX assembly language (MIXAL) provides a set of primitives that will be very familiar to any person with a minimum experience in assembly programming. The MIX/MIXAL definition is powerful and complete enough to provide a virtual development platform for writing quite complex programs, and close enough to real computers to be worth using when learning programming techniques. At any rate, if you want to learn or improve your programming skills, a MIX development environment would come in handy.
The MDK package aims at providing such virtual development environment on a GNU box. Thus, MDK offers you a set of utilities to simulate the MIX computer and to write, compile, run and debug MIXAL programs. As of version 1.2.9, MDK includes the following programs:
MIXAL assembler. Assembler which translates MIXAL source files into
programs that can be run (and debugged) by
MIX virtual machine. Emulation of the MIX computer with a CLI.
A GTK+ GUI for the MIX virtual machine. Provides all of
functionality accessible through a graphical interface.
A Guile shell, with an embedded MIX virtual machine and built-in commands to manipulate it using Scheme.
An Emacs major mode for MIXAL source files editing, providing syntax
highlighting, documentation lookup and invocation of
This elisp program allows running
mixvm inside an Emacs GUD
buffer, providing concurrent edition and debugging of MIXAL programs.
gmixvm implement a simulator of the MIX
computer, giving you a virtual machine for executing and debugging MIX
programs. These binary programs could be written by hand, but it is
easier to produce them compiling MIXAL source files, using the MIXAL
mixasm. On the other hand,
mixguile offers you
the possibility of manipulating a MIX virtual machine through a set of
Scheme functions, so that you can use this programming language to
interact with the virtual machine. In addition,
gmixvm are also able to interpret Scheme scripts (using an
embedded Guile interpreter), that is, you can use Scheme as an extension
language to add new functionalities to these programs.
This manual gives you a tutorial of MIX and MIXAL, and a thorough description of the use of the MDK utilities.