Related articles |
---|
Caller/Callee saved Registers pmagun@iiic.ethz.ch (1994-03-14) |
Re: Caller/Callee saved Registers preston@noel.cs.rice.edu (1994-03-21) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-22) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-22) |
Caller/Callee saved Registers ssimmons@convex.com (1994-03-22) |
Re: Caller/Callee saved Registers paulb@travis.csd.harris.com (1994-03-22) |
Re: Caller/Callee saved Registers cliffc@noel.cs.rice.edu (1994-03-22) |
Re: Caller/Callee saved Registers alk@et.msc.edu (1994-03-23) |
Re: Caller/Callee saved Registers bart@cs.uoregon.edu (1994-03-23) |
Re: Caller/Callee saved Registers robertsw@agcs.com (1994-03-23) |
[26 later articles] |
Newsgroups: | comp.compilers |
From: | hbaker@netcom.com (Henry G. Baker) |
Keywords: | registers, design |
Organization: | nil |
References: | 94-03-054 |
Date: | Tue, 22 Mar 1994 05:17:25 GMT |
pmagun@iiic.ethz.ch (Paul Jakob Magun) writes:
>[why caller vs. caller saved registers?]
This debate has been going in circles for decades. I don't think that any
a priori scheme will ever be optimum (standards committees therefore take
note: you can't win). Gerry Sussman and Guy Steele came up with a 'best
of both worlds' hardware scheme called 'Dream of a Lifetime', and their
paper is in the 1980 Lisp Conference available from ACM. I guess that
'register windows' tried to finesse this problem too, but they have
substantial problems of their own.
More recently, Andrew Appel's group at Princeton have done a lot of
interesting work in which 'registers' are abstracted into additional
arguments which are then returned as additional values. These map
elegantly into callee-saves registers. Given this insight, one can then
do 'lambda-lifting' kinds of optimizations which avoid consing closure
environments so that their contents can be passed around as additional
arguments & returned values. However, one is then left with the uneasy
feeling that any architecture which requires these sorts of heroics can't
be the right thing.
The dataflow people have rightly decoupled the _naming_ of intermediate
results from their _storage_. Perhaps it is time for RISC'ers to take
notice of this approach.
Henry Baker
hbaker@netcom.com
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.