Tom Marchant wrote: <begin extract> That is one way to save the caller's registers, not the only documented Linkage convention. </end extract>
and this is formally correct. There is, however, something of an obligation to use a caller-/invoker-supplied save area when one is in fact supplied. There may even be an obligation to adhere to SA back- and forward-chaining conventions. (Some statement-level languages use them not only for error handling but in implementing language features, e.g., long jumps, out-of-block GOTOs, and condition handling.) My own view is that the original---in their way admirable---linkage conventions of OS/360 were inadequate. They failed to encompass, among other things, machinery for ensuring that code could be reentrant, invoked recursively, the [optional] use of descriptors, and for the management of stack-based automatic/scratch/local storage. The unfortunate consequences of this minimality were many. Different SLPLs constructed their run-time environments very differently, and too much detailed lore must now be mastered before successful ILC is possible. It is posslble to rail against some of the design elements of the LE, but the babel we now makes it clear that something very like it was needed early on. John Gilmore, Ashland, MA 01721 - USA ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
