Talk:MMIX

"an MMIX chip"
Quote: There are 256 general purpose architectural registers in an MMIX chip

What "chip" is this? I am aware of no hardware implementation. Liam Proven (talk) 13:45, 31 December 2009 (UTC)

Name fix, feature request
Should MIXX be changed to MMIX? --Hirzel

Quickly noticed, Hirzel! Have fixed it. Also, I have foolishly re-ambiguated MIX by creating a "MIX" node, instead of the intended "MIX architecture" node. There is also a "Mix" node in the music category. I am not sure what the policy on case-sensitivity is... --Ejrh


 * Thank you for clarifying. A wish - It would be nice to have a graphical representation of the MMIX architecture and perhaps some code examples. --Hirzel

Article format (factoring)
I noticed there seems to be a disagreement on the preferred format of the article as regards textual factoring, i.e. what part of the text fits naturally in the intro blurb vs in the article's body (see history). Naturally, since I made the refactoring which has now been reverted, I would like to get some comments on that. My reason to refactor was that I thought a short background (i.e. mention of original MIX) was better placed in the intro paragraph, and that elaboration of MMIX should be placed in the body, where one could also put even more info if wanted. The wording as such was fine. --Wernher 19:16, 24 Mar 2004 (UTC)


 * (Woops, sorry for not getting back on this sooner.) Looking back at your changes, there was an issue with the wording.
 * First sentence: I removed the word "fictional", as MMIX is real.
 * Second sentence: Since MMIX is the topic, we should first talk about MMIX, rather than MIX. What is it? What is it used for? Those are the questions that should be answered in the first paragraph.
 * (Then, in the second paragraph, we can talk about MIX.)


 * I guess I see your point. More people will have heard of MIX than MMIX, so you could start off talking about MIX. But it could be confusing to people who have not come across either of them. Also, you called Knuth's books "textbooks". :) I couldn't let you get away with that. Hehe. (See ) -- Dan Matic 00:24, 30 Apr 2004 (UTC)


 * Hello, thanks for replying. I now see you point about the intro paragraph, so no problems with that wrt contents. As pertains MMIX being a fictional computer or not, however, I put in that word to distinguish MMIX from 'real/commercial' virtual computers, i.e. actual software products emulating real-life computers, so that people can use them to run 'real' software. An example is IBM's VM/CMS stuff on the S/360/370 range. Assuming I haven't misunderstood things, MMIX is (like MIX) an educational/experimental machine architecture never meant to be realized and used for running production software. Hence my use of 'fictional' as a distinguishing adjective. --Wernher 22:55, 30 Apr 2004 (UTC)


 * I guess you're right, but I still don't think the word 'fictional' fits. :) I suppose I should add more content and explain that MMIX is primarily intended to be an educational tool. (It's being used in various university courses to teach programming and compiler design.) Then again, I doubt many people would be reading this page. I'm fascinated that you've even stumbled upon it! -- Dan Matic 16:20, 1 May 2004 (UTC)

Hello, world
Has anyone else noticed that, contrary to the article, there is not an example on Hello_world_program as of 14:43, 5 Feb 2005 (UTC)?

Yes, this was my fault, but I've added it now :) 145.97.223.187 15:28, 6 Mar 2005 (UTC)

MMIX and self-modifying instructions
At http://en.wikipedia.org/wiki/Self-modifying_code we read:

Donald Knuth's original MIX architecture also used self-modifying code to implement subroutine calls.

Am I to infer that the same is not true of MMIX? If so, some elaboration/explanation here and/or there might be helpful.

But actually, now that I read it more closely, it sounds like it was not true even in MIX, except in the original conception.

Toddcs (talk) 13:24, 3 March 2008 (UTC)


 * MIX uses self-modifying code for subroutine calls. MMIX does not. I removed the original qualification from the sentence you point out to clarify that this is true for the final version of MIX. -- Schapel (talk) 13:45, 3 March 2008 (UTC)

Please define "tripping" and "trapping"
I suspect that the article doesn't mean "tripping" in the psychedelic experience sense, so it would be nice if the trip (and trap) terms was defined in the article. 188.60.234.146 (talk) 21:31, 21 March 2010 (UTC)


 * I agree that "trapping" and "tripping" terms should be defined in this article, so I added a paragraph describing them (with a reference). Feel free to continue to make improvements to this article. --DavidCary (talk) 04:30, 19 April 2017 (UTC)

Hardware implementation
The article states briefly that there is no hardware implementation, but why isn't there? Wouldn't it be a great teaching tool? It wouldn't have to be anything special in terms of speed or complexity or physical compactness - the point after all would be to illustrate very close-to-the-metal concepts to people wishing to understand them, rather than create a commercially viable new computing architecture. Second question: when Knuth says "I was careful to include all of the complexities needed to achieve high performance in practice, so that MMIX could in principle be built and even perhaps be competitive with some of the fastest general-purpose computers in the marketplace" did he really think it could become a popular new architecture? If so, and given that Knuth is a pretty intelligent guy, why did it not come to be regarded as a viable option for widespread use? Beorhtwulf (talk) 22:32, 28 February 2011 (UTC)


 * Dear Beorhtwulf,


 * We all expect to see the MMIX description published in the 4th edition of The Art of Computer Programming, Volume 1.


 * But since that hasn't been published yet, don't you think it's a little premature to be asking why it failed?


 * There is a popular misconception that "competitive with some of the fastest general-purpose computers in the marketplace" has something to do with "widespread use".


 * It doesn't.


 * AMD and Intel make some of the fastest CPUs available in the marketplace -- "competitive with some of the fastest general-purpose computers in the marketplace".
 * You might think that would lead to them being the most widely used CPUs -- "widespread use".


 * But they aren't.
 * A certain alternative 32-bit architecture sells more chips per year than the per-year sales of all of AMD's and Intel's 32-bit (x86 architecture) and 64-bit (x86-64 architecture) CPUs combined.


 * Pretty much all of those 32-bit and 64-bit CPUs are faster than any 8-bit CPU, and yet the last time I checked, 8-bit CPUs sold per year still far outnumbered all 32-bit and 64-bit processors sold per year combined (microprocessor).


 * Therefore, just because something is "competitive with some of the fastest general-purpose computers in the marketplace" has little to do with "widespread use".


 * --DavidCary (talk) 01:41, 7 December 2013 (UTC)


 * Thank you DavidCary for your reply. I hadn't appreciated that a description hadn't yet been published. The article reads as if MMIX has been set out in some detail by Knuth, such that (for all this general reader knows) it would be theoretically possible for someone to go and implement it. Perhaps the article could be updated to reflect what you say about the architecture not being fully documented.
 * I accept what you say about technical superiority not translating into commercial adoption. I suppose I had thought MMIX, if well conceived, might have at least found use in some specialist branch of applied computing in which its performance merits would outweigh any need to run the vast back catalogue of software written with other architectures in mind. Beorhtwulf (talk) 21:45, 8 March 2017 (UTC)

What about the instruction pointer register aka program counter register?
Surely there must be an instruction pointer in the guise of a 33rd hidden, special register. Don Knuth's original documentation doesn't mention this register, but his software makes use of the at-sign (@). Maybe it's unnecessary to mention the @-register. Any opinions? -- Ximalas (talk) 16:09, 17 October 2010 (UTC)


 * I agree that this article should a few words about the program counter (instruction pointer) of the MMIX.
 * There is also surely an instruction register and likely several other internal microarchitectural registers.
 * Some style guides seem to recommend discussing only the instruction set and programmer-visible registers when describing a CPU to programmers, leaving out implementation details such as microarchitectural registers.
 * Apparently someone feels that the instruction pointer is not one of the "programmer-visible" registers in the MMIX.
 * Is there some reason Ximalas suspects the PC is a 33rd special register, rather than a 37th special register, or some other category of register entirely?
 * --DavidCary (talk) 06:40, 30 November 2013 (UTC)
 * I originally thought it would be appropriate to mention such a register. In hindsight, after reading the remarks on this page and knowing that every MMIX program operates on virtual addresses, that's your address, be it your code or your data. Apparently there is no way of determining the physical addresses for each invocation other than through the services of the hypothetical operating system NNIX. Ximalas (talk) 19:35, 3 January 2014 (UTC)