hilpert at cs.ubc.ca
Tue Oct 2 17:33:21 CDT 2007
Chuck Guzis wrote:
> On 2 Oct 2007 at 19:05, Tony Duell wrote:
> > And being a TMS9900-series CPU, aren't the registers in external RAM? I
> > guess the subroutine stack is too.. Which doesn't leave much space for
> > anything else.
> Yup, 32 bytes/16 words at a toss. And the usual subroutine linkage
> used a BLWP (Branch and Link Workspace Pointer or "Bullwhip") which
> set a completely new register frame for each subroutine.
Though IIRC, with a well-designed stack management policy, the register
frames could overlap, so as long as one didn't use the registers in
overlapping memory you were fine. You were not obligated to grab a fresh 16
words of memory on every function call. Equivalent in more conventional archs
to deciding how many machine registers you're going to save based on usage on
a function call rather than saving them all without question.
More information about the cctalk