MMIX Examples

Documentation, Sources, Binaries, Links, Examples, Contributions

Table of Content


MMIX Examples

The simples Examples are the three Hello world examples. These should you get started quickly. You can just download and run binaries, or you can use them to set up your own MMIX development environment and use the examples to check if everything works as expected before you move on to the more complex examples.

  • The Basic Hello World, uses the MMIXware tools to write and run a hello world program

  • The VMB Hello World example introduces an extensible simulator, where the MMIX (or any other CPU) can be combined with various devices to form a complete system simulator. This simulator can be used to develop and run operating systems on the MMIX.

  • The GNU Hello World example introduces the GNU Toolchain: Binutils, GNU Compiler Collection (GCC) and GNU Debugger (gdb/insight). It shows how to download, install and get started with these tools.

When you have worked your way through all the Hello world example, you are ready to start with the fun-part. There are some more examples waiting for you that illustrate different techniques and/or devices.

  • The Stopwatch example implements - trust its name - a Stopwatch using a sevensegment display, three buttons and a timer. It is programmed entirely in ROM. So there is no RAM, no user program, just a specialized BIOS. This is a good example to look at if you want to program BIOS routines that handle interrupts.

  • The Minesweeper example features an implementation of the well known Windows program. It uses a frame buffer device with GPU for graphics output and a mouse for input. There is no character oriented screen device and no keyboard. It is an extended program written in MMIX Assembler.

  • The MMIX on MMIX example has a BIOS that can handle a FAT32 filesystem on a simulated hard drive. The filesystem code is written in C, compiled and linked together with the rest of the BIOS. The Application is MMIX itself. The simulator code is translated from its original form as a cweb file to a c file, then compiled to MMIX code and runs on the MMIX simulating the MMIX (you can take that idea to any level). The example illustrates a fairly complex BIOS running a fairly complex program.

  • A very different approach to Operating systems is TinyOS, and the Blink example, runs the Blink program from the TinyOS Tutorials on the MMIX under TinyOS. Using the GNU Toolchain, both the BIOS and the Application are build from nesc Code. TinyOS is an Operating system developed for wireless sensor networks and stresses efficiency. Its interesting to see how the requirements of such an OS can be mapped to the MMIX architecture.

  • The Linux example is still under construction. It boots an MMIX under Linux ...

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