Related articles |
---|
RPN as intermediate code? gorelick@esther.la.asu.edu (1995-08-22) |
Re: RPN as intermediate code? lkaplan@BIX.com (1995-08-25) |
Re: RPN as intermediate code? jaidi@technet.sg (1995-08-26) |
Re: RPN as intermediate code? odersky@ira.uka.de (1995-08-29) |
Re: RPN as intermediate code? ukln@rzstud2.rz.uni-karlsruhe.de (1995-08-31) |
Re: RPN as intermediate code? hbaker@netcom.com (1995-09-02) |
Re: RPN as intermediate code? mejohnsn@netcom.com (1995-09-11) |
Re: RPN as intermediate code? bevan@cs.man.ac.uk (1995-09-06) |
Re: RPN as intermediate code? Robert.Corbett@Eng.Sun.COM (1995-09-12) |
Newsgroups: | comp.compilers |
From: | odersky@ira.uka.de (Martin Odersky) |
Keywords: | interpreter |
Organization: | Compilers Central |
References: | 95-08-164 |
Date: | Tue, 29 Aug 1995 16:35:30 GMT |
Noel Gorelick writes (on RPN translations):
However, when I get into conditionals and loops, I have absolutely no idea
how to proceed. Do I really have to get all the way down to the level of
computing jump offsets and implement these as conditional gotos? Or is
there a more elegant way that I just haven't found yet?
I believe there is one. All you need is a construct that pushes the
address of a given chunk of code on the execution stack. That address
can then be used by instructions for conditionals, loops etc. E.g.
you would translate
while x <= y do x := x * x
to:
pushc x y <=
pushc x x * x:=
while
Cheers
-- Martin Odersky
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.