MMIX Linux Binaries

Documentation, Sources, Binaries, Links, Examples, Contributions

Table of Content


Linux Binaries for MMIX

Here you find Linux binaries that were compiled with the GNU C-Compiler. If you want to do the compilation yourself, you need the cweb files from the MMIXware distribution. You find recent files on the Sources Page and Versions until August 31, 2011 at Donald Knuths MMIX News page.


The following programs are the basis for working with MMIX. The programs are produced by a process called "Literate Programming", tightly integrating the production of programs and documentation. To produce the executables below, you need the cweb files mentioned above. From these the program ctangle (see below) will produce .c and .h files that can be compiled using a C-Compiler. The cweb distribution contains a Makefile describing the whole build process. You do not need to go through the whole process, however. Just download the following files. The documentation for these programs, is produced from the same cweb files using the cweave program and tex. You can download the documentation in pdf format from the documentation page.

  • mmix Instruction level simulator
  • mmixal Assembler
  • mmmix Pipeline Simulator
  • mmotype Object file display utility

GNU Binutils, GCC, and gdb

An alternative to the basic MMIX assembler mmixal (see above) is the use of the GNU toolchain. The GNU toolchain is a complex set of programs and libraries.

GNU binutils for MMIX

The so called binutils contain an assembler, a loader, and a library builder as well as other utilities to inspect or copy object files. The common format for these object files is the ELF format. The "native" mmo format, as produced by mmixal, is supported as well.

gcc - the GNU C Compiler for MMIX

While MMIX was designed with assembler programming in mind, for larger programs a high level language is a better choice. The next program is therefore the GNU C-Compiler gcc Thanks to Hans-Peter Nilson the GNU C-Compiler gcc is available for the MMIX architecture. It allows programming the MMIX in C or C++. It includes also the C-library, with such mundane functions as "printf".

Having a C compiler, you can of course also write literate programs for the MMIX (see for example "Running MMIX on MMIX").

gdb and insight - the GNU debugger for MMIX

When it comes to debugging, the necessary companion to gcc is gdb, the GNU debugger, which comes as a command line utility "gdb" and a sophisticated GUI appropriately named "insight". The GNU debugger is currently in "alpha" state. You can set breakpoints directly in the source files, step through your programs, and inspect the registers. While in C-Mode, you can also inspect variables and the stack (with some restrictions). The GNU debugger currently works only with the gmmixcpu program from the Virtual Motherboard collection.


To get these programs installed, you can follow the installation instructions for GCC & Co. by Hans-Peter Nilson or you can download and install the binary files below. These were taken from /opt/mmix and put in a compressed (gzip) tar file. The same binary distribution is also available for Win32 on the Win32 Executables page.

Other Binaries

Literate Programming

Literate programming means writing programs, as you would write a novel or an essay. You explain to the reader what your program is all about and how it is working. You put this description in a "web" file and if you do this on a sufficient level of detail, the program ctangle, itself written as a literate program (see The CWEB System of Structured Documentation ), can tangle the web and extract a program from it. The program cweave on the other hand will weave the web into a nice book. The program ctie, is an advanced utility. You find more about is on the documentation page.

  • cweave produces .tex files form .w files for documentation
  • ctangle produces .c files from .w files
  • ctie alternative to ctangle for multiple change files

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