Register machines and stack machines are equivalent and turing-complete. There is no
difference in expressiveness between the architectures. Register designs are more popular
because they're more amenable to optimization. It's easier to generate code to store a
temporary that needs to be used more than once in a register than it is to arrange the stack
so it's at the top at the right time.
Posted Nov 14, 2007 4:22 UTC (Wed) by ncm (subscriber, #165)
[Link]
Obviously. But a design incompatible with JVM may also implement instructions that JVM
doesn't. As an example, CLR implements the tail-call optimization. Turing-completeness is
meaningless at this level. (If you insist on nitpicking, I will point out that nobody has
ever implemented a Turing-complete execution environment, and nobody ever will.)