mixal - a load-and-go MIX assembler
mixal is an implementation of the hypothetical MIX computer and its assembly
language called MIXAL. The computer was designed by Donald Knuth for use in
his monumental and yet to be finished book series The Art of Computer
Programming. All programs and all programming exercises in the book are
written in the MIXAL language.
This implementation is a load-and-go assembler, meaning that you provide it with
a MIXAL program source, which it translates into MIX machine code, which it
promptly executes by acting as a MIX emulator.
You give mixal zero or more MIXAL program source files in the command line,
which the program interprets. If you give it no arguments, it expects to find
a program in the standard input stream. After the program has executed, the
final state of the machine registers is printed to the standard output stream.
The card punch and line printer devices are connected to the standard input and
output stream, respectively. Console input and output are connected to
standard input and output, and the disk devices are connected to files named
diskN in the current directory, where N is the device number. Those files are
created on demand.
There is one significant difference between the MIXAL input language and MIX as
originally described by Knuth: Knuth puts fields at fixed offsets on a line,
while this implementation expects them to be separated by whitespace. (Purists
may wish to fix this obvious bug.) Since the ALF directive, which defines
constant strings, becomes ambiguous when delimited by whitespace, there's a
new syntax to achieve the same effect. Instead of
This MIXAL implementation does not do floating-point. The tape devices are not
This MIXAL implementation was designed and written by Darius Bacon, and then
ported to Unixish systems and debugged by Eric S. Raymond. This version
includes corrections to multiplication and division by Larry Gately. This
manual page was written for Debian by Antti-Juhani Kaijanaho, with changes by
Darius Bacon and Eric S. Raymond.
The MIXAL language was designed by Donald Knuth. We gratefully acknowledge the
general permission granted by Dr. Knuth and Addison-Wesley to redistribute MIX
documentation and examples from The Art of Computer Programming in connection
with open-source implementations of the language and under the license terms
of those implementations.
The files /usr/share/doc/mixal/README and /usr/share/doc/mixal/NOTES contain
some information about this MIXAL implementation.
A description of the MIX system and the MIXAL language can be found in Donald E.
Knuth's book The Art of Computer Programming, Volume 1: Fundamental
Algorithms; 3rd Edition (Addison-Wesley 1997). (Or see the home page at