An integrated development environment for Donald E. Knuth's fictitious MIX machine.

SourceForge.net Logo

What is MixIDE?

MixIDE is an open-source standalone Java application intended to serve as a (rudimentary, but effective) integrated development environment for the MIX machine, introduced by Donald E. Knuth in his celebrated monograph The Art of Computer Programming. It includes a MIXAL assembler, a MIX machine simulator, and a comprehensive help set (for the time being in Italian only) on the MIX instruction set.

The main technical aspect which causes MixIDE to differ from other implementations of the MIX machine is that it is written in Java and, therefore, it should run on any machine with a recent Java Runtime Environment installed (not that it is the only one: another MIX simulator with a very attractive graphical user interface is JMixSim).

The MIXAL assembler is a faithful implementation of Knuth's MIXAL assembly language. The only departure from the standard is the the argument of the ALF directive must be enclosed between double quotes ("). Local labels are now supported.

The MIX machine simulator is complete, and includes support for the floating-point instructions (FIX, FLOT, FADD, FSUB, FMUL, FDIV, and FCMP). Floating-point arithmetics, however, is performed by means of Java's built-in floating-point capabilities, not by a faithful implementation of the algorithms described by Knuth in "The Art of Computer Programming".

Finally, a few non-standard characters have been added to fill the empty slots of Knuth's original MIX character encoding.


MixIDE is free, open-source software, and is distributed under the GNU General Public License (GPL).


You are welcome to download the latest release or check out the Java source code of MixIDE from the MixIDE Project page on SourceForge.net.

How to Use MixIDE

There are just a couple of things one must know to be able to use MixIDE to compile and run MIXAL programs:
  1. a MIXAL program can be written by means of any text editor, and saved into a plain text file with the ".mix" extension;
  2. a ".mix" source file must be assembled into a MIX memory dump file (".dmp" extension) by choosing the "Compile..." item in the "Assembler" menu; by the way, a MIX memory dump file is just a plain text file so that it can be easily inspected;
  3. an assembled program, contained in a MIX dump file, must be loaded into the MIX machine by choosing the "Load..." command in the "MIX" menu and run by choosing the "Run" command.
The "Step" command executes just one instruction; the "Step over" command works much like "Step", except that, if the instruction being executed is a jump, the program is run until it terminates or it arrives at the address after the jump instruction.

About the Project

The MixIDE Project was started by Andrea G. B. Tettamanzi (now with the University Nice Sophia Antipolis in France) back in 2003 to make a platform-independent implementation of Knuth's MIX machine available for the students of his class on "Computer Programming" at the University of Milan, Italy, to practice elementary programming in MIXAL.

Since April 2008, the MixIDE Project is hosted by SourceForge.net.

Last updated on February 16, 2015