| ▲ | jcranmer an hour ago | |||||||
Well, even as-is, it turns out that the kind of assembly language that Knuth originally wrote it in itself had a very short lifespan. MIX assumes a single accumulator register for arithmetic, which hasn't been a common processor architecture since around the 1980s. MMIX is redesigned to be more RISC, but it also uses a dynamic register window concept (which itself I think was only used on Itanium, and we all know how that architecture went down). And unfortunately, for a lot of modern algorithms, you're going to have dive into SIMD-like algorithms, something MMIX doesn't have. Also, a lot of modern processors have a decent suite of bitwise operations (e.g., count leading/trailing zeros/ones, popcount) that is also missing from MMIX. The programming languages that are in favor may change from decade to decade, but so to does most of the assembly language techniques. | ||||||||
| ▲ | compiler-guy 40 minutes ago | parent [-] | |||||||
Sparc and Xtensa also have register windows, although each has a slightly different implementation. They were all the rage for a while, because they make procedure calls fast but turn out to have subtle issues in highly-multithreaded scenarios. | ||||||||
| ||||||||