I just realized that M0 is stack based. M0 is dedicated to use the least op
to do the work, it's extreme makes it being stack based, not register
based. If the latter is more advanced, then it's a retrogression. Here is
set_imm I0, 0, 123
set_imm I1, 0, 356
add_i I2, I1, I0
push I0, 123
push I1, 123
add I2, I1, I0
mov %eax, 123
add %eax, 356
add %eax, %ebx
add %eax,  #  is memory unit.
add , %eax #  is memory unit.
In M0, we can't do this:
add_i I2, 123, 356
which should be right way of register based VM, and which parrot currently
does. I don't think parrot current ops implementation is bad, we should
reuse it to implement M0 ops. And I don't want M0 is stack based for easier
JIT too. Any thought or viewpoint?