The MMIX Supplement to The Art of Computer Programming

Documentation, Sources, Binaries, Links, Examples, Contributions

Table of Content


This page provides materials relating to The MMIX Supplement to The Art of Computer Programming. This Book is expected to appear late in 2014. It contains the programs from Donald Knuths famous books rewritten for the MMIX computer. It is the final result of the MMIXmasters project.

The MMIX Supplement Cover

Programms and Testcases


Several tools were designed for the programs as given above:
  • mmstotex, a utility to convert mms files to TeX files.

  • mmstort, a utility to extract instruction counts from mms files, add them up, and compare them to a given sum.

  • testgen, a utility taking a tst file (the test description) and possible several mms files producing a series of mms files as output. Each output file is a complete MMIX program that can be assembled and run to execute the test in question.

  • ftoo, a preprocessor to convert floating point numbers to their hexadecimal representation. It can be used as a preprocessor for mms files (or tst files) that need to use floating point constants.


  • page i, program line 5: replace "Programmming" by "Programming".

  • page ii, program line 18: replace "Programmming" by "Programming".

  • page 2, program line 34: This line might load a formating character as the start symbol of the permutation.
    See BUG 1.3.3 A. Further changes on
    page 3, 4, 5.

  • page 5, line 12: replace "concerning" by "connecting".

  • page 6, program line 40: replace "B4.Change" by "B4. Change".

  • page 11, line -6: replace "red and green" by "green and red".

  • page 12, line 2: replace "SG and SR" by "GS and RS".

  • page 32, line -2: replace "function" by "functions".

  • page 56, line -6: replace "fv" by "fv".

  • page 57, exercise 14, line 3: replace "64 bit" by "64-bit".

  • page 66, Program line 54: replace "ui+J" by "uj+i".

  • page 67, exercise 13, line 1: replace "is a" by "is".

  • page 78, line 2: replace "h0" by "h0".

  • page 85, line 13: remove the comma after "loop".

  • page 107, line R in Table 1: The content of this line should be re-positioned one place to the right; I.e. the first entry should be empty, ‘ARE’ should be in second place, ‘FROM’ in the 4th column, ‘OR’ in the 7th column, and ‘HER’ in column 11.

  • page 108, line 9: replace "(page 446)" by "(page 440)".

  • page 117, line 1: replace "haven" by "have".

  • page 120, Solution 7: See BUG 1.3.3 A.

  • page 150, Solution 4, line 2: replace "greater or equal than" by "greater than or equal to".

  • page 151, Solution 14, line 2: replace "64 bit" by "64-bit".

  • page 159, exercise 13, program line 6: replace "SL i,m,3" by "SL i,m,2".

  • page 165, exercise 3, program line 5: replace "BNP t,1FB+2A" by "PBNP t,1FB[A]".

  • page 165, exercise 3, program line 10: replace "BNN i,2BB+3 Loop while i ≥ 0." by "PBP i,2BB+1[1] Loop while i > 0."

  • page 175, Solution 9, line 3: insert a closing parenthesis ")" before the semicolon ";".

  • page 176, program line 41: replace "ij" by "ji.

  • page 188, line 11: replace "Program 2.1A" by "Program 2.1-(5)".

I will gladly reward any first finder of an error, be it technical, typographical, orthographical, grammatical, or otherwise, by sending her or him a nice MMIX T-shirt (as long as supplies last).

Please help to keep this site up to date! If you want to point out important material or projects that are not listed here, if you find errors or want to suggest improvements, please send email to email