Path: utzoo!attcan!sobmips!uunet!aplcen!samsung!cs.utexas.edu!oakhill!marvin From: marvin@oakhill.UUCP (Marvin Denman) Newsgroups: comp.sys.m88k Subject: Re: Info about the 88open Consortium and standards Message-ID: <2631@yogi.oakhill.UUCP> Date: 16 Nov 89 17:02:18 GMT References: <1948@psueea.UUCP> <1989Nov14.175806.23483@paris.ics.uci.edu> <5063@tekcrl.LABS.TEK.COM> Reply-To: marvin@yogi.UUCP (Marvin Denman) Organization: Motorola Inc., Austin, Texas Lines: 34 In article pfeiffer@nmsu.edu (Joe Pfeiffer) writes: >terryl@tekcrl.LABS.TEK.COM writes in <5063@tekcrl.LABS.TEK.COM>: > >| But the opposite (where NO registers are saved across procedure calls; it >|is the responsibility of the calling procedure to save whichever registers it >|will need later) is probably too restrictive; it puts too much burden on the >|compiler writer (not to mention all the assembler writers, but it's not a > >This is probably getting a bit far afield, but I'm very puzzled by >this statement. It has always been my impression that it doesn't much >matter whether the registers are preserved by the caller or the >callee, just so somebody does it. Why is there a greater burden on >the compiler writer if it's the callee? > >-Joe Pfeiffer. The answer probably lies in the fact that many leaf calls will not require enough registers that they need to save anything if they know which registers are guaranteed to be "dead". These are by frequency a large percentage of calls so they should not be penalized. Using the current standard a leaf routine can use all of the temporary set of registers plus all of the parameter passing registers without any saving. Why should the caller save "all" of his live registers when only a small fraction will be used? The converse argument is why should the callee be required to save dead registers? The current scheme is a fairly efficient compromise between the two, that will do in the absence of global register allocation. -- Marvin Denman Motorola 88000 Design