> I am hoping to induce some discussion on the merits (or lack of)> of stack-based intermediate representations and register-based ones.> Pointers to papers would be much appreciated as well.

We here at gardens point use a stack-based intermediate form, despite
the trend. We do sparc, intel, power, alpha and mips backends based
on these. See http://www.fit.qut.edu.au/CompSci/PLAS/GPM/ for info
on the compilers.

We liked stack IRs because of the clean separation between front and
backends, for example, the source of our Modula-2 frontend is identical
in all architectures. We also have a (circa 1988) demo compiler which
interprets the stack IR in the manner of the Java machine. However,
against that should be weighed the fact that our latest backends recreate
a tree form from the stack IR, so that we can use bottom-up-tree-rewriting
for code selection. Yes, this does seem a little ironic, since we started
with a perfectly good AST in the frontend.