Path: utzoo!yunexus!geac!syntron!jtsv16!uunet!ncrlnk!ncr-sd!hp-sdd!ucsdhub!ucsd!nosc!helios.ee.lbl.gov!pasteur!agate!bizet.Berkeley.EDU!matloff From: matloff@bizet.Berkeley.EDU (Norman Matloff) Newsgroups: comp.arch Subject: Re: multiple register windows Message-ID: <16155@agate.BERKELEY.EDU> Date: 28 Oct 88 20:05:08 GMT Article-I.D.: agate.16155 References: <156@gloom.UUCP> <310@lynx.zyx.SE> <332@pvab.UUCP> <15964@agate.BERKELEY.EDU> <23367@amdcad.AMD.COM> <16003@agate.BERKELEY.EDU> Sender: usenet@agate.BERKELEY.EDU Reply-To: matloff@iris.ucdavis.edu (Norm Matloff) Organization: EECS, UC Davis Lines: 25 In article <536@m3.mfci.UUCP> colwell@mfci.UUCP (Robert Colwell) writes: *In article <16054@agate.BERKELEY.EDU> matloff@iris.ucdavis.edu (Norm Matloff) writes: *>A compiler which automatically inlines procedure calls might be able *>to do what you are saying. However, there may be some unpleasant *>side effects, depending on the language. Actually, one of my grad *>students in making a thesis out of this, so I'll try to report more *>on it later. *Don't forget that one of the side effects of having your registers *arranged into windows is that you don't have access to very many *registers from within any given procedure. There are routines *that need lots of them, and there are routines that need very *few. The one-size-fits-all approach is not what a good compiler *wants; it would rather see them all at once and do the management *explicitly. The windowing is just a hack to make parameter-passing *cheap, which a compiler can do just as well or better. There was a good suggestion (I don't remember the reference, maybe the Huguet and Lang paper) to have variable-size windows, but only in a FEW sizes, solving the one-size-fits-all problem at a low time cost (as I recall, this was achieved by restricting window sizes to powers of 2). Norm