So schreibt sich MMIX auf laotisch:

Und hier die Unicode character-codes:
| 0x0EC0 | 0x0EAD + Akzent 0x0EB1 | 0xEA1 | 0x0EA1 + Akzent 0x0EB4 | 0x0E81 | 0x0EAA |
| E | öo | M | Mi | g (goo) | s |
Die Arbeit mit MMIX und mmmix hat einige Fehler im MMIXWare-Buch zu Tage gefördert. Hier meine Ausbeute an Fehlerschecks von Donald E. Knuth:
![]() |
page 378, line 15 from the bottom (13 Apr 2000)*** insert the following after "case DIVI:" (it handles integer divide check): if (!z.l && !z.h) aux=y, exc|=D_BIT; else |
![]() |
page 423, line 16 (04 Sep 2001) change "#12" to "#a" |
![]() |
page 216, line 13 (11 Jan 2002) change "to written" to "to be written" Missing Tab-char in Fasc. 1 |
![]() |
page 254, line 18 (15 Jun 2002) change "quantites" to "quantities" |
![]() |
page 322, lines 4 and 6 from the bottom (27 Feb 2004)*** change "Dcache->tagmask" to "-Dcache->bb" |
![]() |
page 322, line 17 (23 Mar 2004)*** after this line (which begins "if (p) return..."), insert the following new lines of code: if (((Dcache->outbuf.tag.l^addr.l)&-Dcache->bb)==0 && Dcache->outbuf.tag.h==addr.h) return Dcache->outbuf.data[(addr.l&(Dcache->bb-1))>>3]; page 322, line 20 (23 Mar 2004)*** after this line (which begins "if (p) return..."), insert the following new lines of code: if (((Scache->outbuf.tag.l^addr.l)&-Scache->bb)==0 && Scache->outbuf.tag.h==addr.h) return Scache->outbuf.data[(addr.l&(Scache->bb-1))>>3];" page 502, line 12 from the bottom (23 Mar 2004)*** change "printf("mmmix> ");" to "printf("mmmix> "); fflush(stdout);" |
![]() |
page 227, line 11 (28 Sep 2004) change "$r_1\ldots r_a$" to "$r_1\ldots r_{2^a-1}$" page 322, line 9 of magic_read and also line 9 of magic_write (11 Aug 2004)*** change "q->addr.l==addr.l" to "(q->addr.l&-8)==(addr.l&-8)" |
![]() |
page 418, line 12 (30 Mar 2005)*** change "exit(1)" to "exit(0)" |