Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!auspex!guy From: guy@auspex.auspex.com (Guy Harris) Newsgroups: comp.arch Subject: Re: Complex Instructions Keywords: RISC, CISC, HPS Message-ID: <1477@auspex.auspex.com> Date: 20 Apr 89 23:00:13 GMT References: <807@microsoft.UUCP> <92634@sun.uucp> <13322@steinmetz.ge.com> <573@loligo.cc.fsu.edu> <5064@hubcap.clemson.edu> <3169@bd.sei.cmu.edu> <38629@bbn.COM> Reply-To: guy@auspex.auspex.com (Guy Harris) Organization: Auspex Systems, Santa Clara Lines: 23 >You should include ALL of the data here. The proper way of saying >this is: "The implementation of the subset that I need in a particular >case is faster than the full operation." For example, the VAX CALL >includes aligning the stack and saving enough state so it can be fully >restored, saving the condition codes, pushing a minimum of five longwords, >picking up a mask at the called procedure, and pushing only >those registers with corresponding bits set in the mask. I'll bet >your substitution code did not do all that. If it didn't *have* to, it probably didn't. Does VAX compiled code really care about having the condition code saved and restored? Does it care about all five of those longwords? The compiled code in the callee can save the registers itself - or the designer of the calling sequence can choose to have the caller save the registers (which, as I remember, Firth has advocated in the past). >INDEX was another example where some of the exception checking was >left out of the emulation. I guess it USUALLY works! In a lot of cases the exception checking *can* be left out, if the compiler already knows that the subscript won't be out of bounds. Admittedly, I think IBM may have a patent on one way of doing this, so unless you do it differently that may be an extra cost :-).