There are other VM designs that I'd like to see compared with the usual
stack and register based ones:
1) Tree walkers. The code is a tree that's walked by the VM. VM data
would be essentially stack-based (but one could use registers for
caching the topmost stack entries).
2) Tree rewriters. The VM modifies the tree as it interprets it,
replacing inner nodes with their values as it goes along. Common
expressions can be shared, so it's really not a tree but a DAG.

Anybody with practical experiences who can compare these machines with
the classical stack/register-based VMs?

Notes:
Model (1) is that of "slim binaries" (IIRC).
Model (2) is a very popular model for functional languages (some aspects
of FPLs are easier to implement with a graph rewriter).

Regards,
Joachim
[This would be a good question for the virtmach list, a spinoff from
comp.compilers. To subscribe, send "subscribe" to
virtmach-request@lists.iecc.com. -John]