[virtmach] parrot VM?

Stephen Pelc Stephen Pelc <sfp@mpeltd.demon.co.uk>
Sun, 14 Jul 2002 12:45:07 +0100

> Can you give some examples of the types of transformations that
> you are using?  Are you converting the stack machine into some
> cannonical form before you optimize, or some other internal
> representation?
The code generators are one-pass (for speed/simplicity) and
the major data unit is what we call the "working stack".
This is a representation of the stack, from which code is 
generated and registers allocated as needed. Most of the 
classical optimisations are available. From the working stack 
you code generate, and the end of basic blocks you can then 
transform ("shuffle") the working stack to whatever canonical 
form you have chosen for the stack.

So far the shuffle is the only code generation element I have 
found that is unique to stack machines. There are a couple of 
simplistic papers about the VFX code generator on our web site, 
but this *is* a commercial product ... Funny thing is, we didn't 
release the source code for VFX until after we had serious 
competition in performance, and we had about three years as 
clear performance leaders (3:1 and more) in the marketplace. Ho, 
hum - now back to improving it some more.


Stephen Pelc, sfp@mpeltd.demon.co.uk
MicroProcessor Engineering Ltd - More Real, Less Time
133 Hill Lane, Southampton SO15 5AF, England
tel: +44 23 80 631441, fax: +44 23 80 339691
web: http://www.mpeltd.demon.co.uk - free VFX Forth downloads