Re: Register Based Interpreter Model

christian.mueller@aktivanet.de
2 Nov 2005 22:10:55 -0500

          From comp.compilers

Related articles
Register Based Interpreter Model acampbellb@hotmail.com (Avatar) (2005-11-01)
Re: Register Based Interpreter Model basile-news@starynkevitch.net (Basile Starynkevitch \[news\]) (2005-11-02)
Re: Register Based Interpreter Model nkavv@skiathos.physics.auth.gr (Uncle Noah) (2005-11-02)
Re: Register Based Interpreter Model christian.mueller@aktivanet.de (2005-11-02)
Re: Register Based Interpreter Model spammer@b2z.com (Omri Barel) (2005-11-02)
Re: Register Based Interpreter Model kurt-gmane@oakadaptive.com (Kurt Jung) (2005-11-02)
Re: Register Based Interpreter Model anton@mips.complang.tuwien.ac.at (2005-11-02)
Re: Register Based Interpreter Model fw@deneb.enyo.de (Florian Weimer) (2005-11-02)
Re: Register Based Interpreter Model lhf@csgpwr1.uwaterloo.ca (2005-11-02)
JIT-compiling bytecode la@iki.fi (Lauri Alanko) (2005-11-04)
[1 later articles]
| List of all articles for this month |

From: christian.mueller@aktivanet.de
Newsgroups: comp.compilers
Date: 2 Nov 2005 22:10:55 -0500
Organization: Compilers Central
References: 05-11-016
Keywords: VM

> I am doing some research on the register-based interpreter model in
> comparison to the more traditional stack-based approach. I would like
> to know if anyone has had any practical experience with register-based
> interpreters or has any good suggestions for references about this
> topic?


There are at least two recent projects that decided for a register based
approach, namely Lua (www.lua.org) and Parrot (www.parrotcode.org). The
Lua people report a significant speedup when they switched to the register
machine. Davis et al did some experiments with a JVM for their paper:


The Case for Virtual Register Machines (2002)


Some authors argue that a register machine is more complicated but a
better starting point for jitting.
I am currently developing a register based interpreter for the programming
system Alice (www.ps.uni-sb.de/alice). As the intermediate representation
is somewhat biased towards the register approach, it is even easier than
using a stack. Like in Lua, I decided to use the local variables as
registers, i.e. to have an unbounded number of registers. In that sense
the only difference between stack and registers is that registers can
randomly be accessed and intermediate results are stored not on the stack
but in scratch registers.


Regards,


Christian


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.