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.