>Henry Baker referred to Guy Steele's paper "Dream of a Lifetime:..." in>the 1980 LISP conference. Steele's idea quickly degenerates to a callee>saves scheme with additional overhead.>>Steele's idea is to save the intersection of the registers that the caller>and callee require.

No! While several people _have_ proposed such a thing; Steele and
Sussman's paper is much more interesting. They propose an alternative
resource called "racks". Rather than a set of registers and a stack,
their machine would have a set of these racks. A rack has 4 operations:

Assign(R, V) -- make V the current value of the rack R

Fetch(R) -- return the current value of the rack R

Save(R) -- save (probably on an internal stack) the current
value of the rack R

So, obviously we can use a bunch of these things as registers, simply
issuing Saves and Restores around procedure calls.

Steele and Sussman described 4 simple implementations of the rack
abstraction and compared them experimentally. I won't describe them (read
the paper!), but I can assure you that the idea does _not_ "quickly
degenerate to a callee-saves scheme with additional overhead." On the
other hand, I don't expect to see the idea taking over the risc community.

The complete reference is

The Dream of a Lifetime: A Lazy Variable Extent Mechanism
Steele and Sussman
Conference Record of the 1980 LISP Conference