Path: utzoo!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!rpi!crdgw1!crdos1!davidsen From: davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) Newsgroups: comp.arch Subject: Re: register save Message-ID: <3261@crdos1.crd.ge.COM> Date: 13 Mar 91 21:15:42 GMT References: <1991Mar11.192116.1974@dgbt.doc.ca> <912@spim.mips.COM> <3255@crdos1.crd.ge.COM> <10896@dog.ee.lbl.gov> Reply-To: davidsen@crdos1.crd.ge.com (bill davidsen) Organization: GE Corp R&D Center, Schenectady NY Lines: 21 In article <10896@dog.ee.lbl.gov> torek@elf.ee.lbl.gov (Chris Torek) writes: | In many (yeah sure :-/ ) cases you can put the values in the windowed | registers in the first place, and/or leaf functions (those again!) can | avoid using a new window (doing everything in the caller's window and | any `callee saves' temporary registers). The obvious exception is pass thru values, where values you got from your caller are passed to a leaf. These come in in the wrong place, so you can't avoid the move. And consecutive calls will always need a move to get the args in the right place. Maybe there's some joy to having the caller control the offset of the windows. Then I can work with the things I will pass to leafA int x4..6, and leafB in 9..12, and specify that my x4 become x0 for leafA, but my x9 becomes x0 for leafB. That would probably raise more problems than it kills, though. -- bill davidsen (davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen) "Most of the VAX instructions are in microcode, but halt and no-op are in hardware for efficiency"