This is a brand new page that I'm just beginning to set up, now that MMIX is maturing at last. Right now all I have time to do is announce the stuff that is available for downloading.

Click here for basic info about MMIX

The First Complete Release of the First Fascicle

Here it is, hot off the press: The programmer's introduction to MMIX that will eventually appear as Sections 1.3 and 1.4 of The Art of Computer Programming, Volume 1. If you download it now, you maximize your chance to receive rewards for finding errors. Sections 1.3' and 1.4': An introduction to MMIX and MMIXAL (424KB of compressed PostScript) (revision 8, version of December 24)
Revision 8 is pretty similar to revision 7; but revision 7 contained important changes to the previous versions, so please throw out all earlier drafts. I do believe that Revision 8 contains the ``ultimate'' definition of MMIX, and that only minor patches will be made henceforth.

Changes to the instruction set

Just before I finished Fascicle 1, I received a wonderful suggestion from Philip H. Jensen, namely to replace LSS/LSSU and EQL/EQLU by a single pair of instructions, CMP/CMPU (thus using three-way strcmp-style comparisons instead of binary two-way comparisons). Although I had frozen the design of MMIX in February, and although I had just finished fitting 130 pages of text neatly into pages, and although I had successfully debugged more than 50 programs using the "frozen" specs, I soon realized that I could not live happily ever after unless I made the change to CMP/CMPU. Indeed, it was now or never; so I spent three days and nights tearing everything apart and putting Humpty Dumpty back together again. Fortunately this change also led to improvements in the floating point comparison instructions, which are likewise cleaner than before; and it gave me a chance to introduce new opcodes TDIF and ODIF, which join BDIF and WDIF to complete a nice symmetry. (See the revised and truly frozen opcode chart.)

Furthermore, as I was finishing the pipeline simulator and looking closely into the darker corners of the machine --- interrupts and caching and synchronization, etc. --- I realized that a few more changes were desirable. For example, the special register numbers have been revised, because I needed to change my planned implementation of CSWAP. Operations EVDC and PREPGO are now renamed SYNCD and SYNCID, and their definitions have changed slightly; the SYNC operation itself has been revamped.

As a result, I now ask everybody to throw away their copies of previous documentation and to deinstall the old simulators and assemblers; replace them with the uptodate stuff mentioned above and below. Anything dated before 23 August is obsolete!


Here are the final drafts of the full story about the MMIX architecture and its assembly language and loader format, as well as a description of a rudimentary operating system and runtime environment that will be assumed in the simpler parts of my books.

Definition of architecture details (142KB of compressed PostScript) (version of 24 December 99)
Definition of the assembly language and loader format (60KB of compressed PostScript) (version of 24 December 99)
Definition of simple I/O, the runtime environment, and the simulator's online/offline iteraction commands (45KB) (version of 24 December 99)


I have accumulated several months of experience with a straightforward MMIX assembler and simulator, and I know that they work reasonably well on three platforms. These programs have been getting a little bit better every day since June! Please port them to your own machine, and let me know of any problems.

Also---at last (ta da)---the pipeline simulator is here, ready to be foisted upon the world; it passed all of its torture tests on 22 August. This is one of the most difficult programs I've ever written, and surely one of the most interesting, for people who have time to explore low-level details.

Download MMIXware: the simple simulator, assembler, test programs, and full documentation, plus the meta-simulator: mmix99.tar.gz (Version of 28 December 99)


All the software and documentation have just been printed in a handy book format, with mini-indexes on each right-hand page so that you can easily find your way around. I also prepared a comprehensive master index to all the programs. Everybody seriously interested in MMIX will enjoy this new book, available from Springer Verlag as Lecture Notes in Computer Science number 1750.

Call for volunteers

All of the MIX programs in Volumes 1--3 will need to be rewritten in MMIX, before I finish the ``ultimate'' edition of those volumes that I plan to write after Volume 5 is completed. The current target date for the ultimate volumes is the year 2011, so there is plenty of time to do the conversion. But I think it will be an instructive undertaking if different groups of people from around the world try to do the necessary translations first, perhaps in friendly competitions, long before I get into the act.

I have just finished drafting a straightforward MMIX assembler and interpreter (see above), but other people will no doubt want to add many bells and whistles to improve the user interface and to compare different models of the hardware.

Such activities need to be coordinated. Fortunately, Vladimir Ivanovic has volunteered to take charge of this task, while I'm busy working full time on Volumes 4 and 5. At the moment he's setting up a nice new website for the MMIX Task Force. If you're interested in joining this happy group of volunteers, take a peek at the MMIXmasters home page, and/or send email to

The Art of Computer Programming

Don Knuth's home page

Valid HTML 4.01 Transitional