Path: utzoo!mnetor!uunet!husc6!hao!ames!amdcad!tim From: tim@amdcad.AMD.COM (Tim Olson) Newsgroups: comp.arch Subject: Re: Am29000 Reg-Reg Move? Message-ID: <19769@amdcad.AMD.COM> Date: 31 Dec 87 21:43:13 GMT References: <17473@felix.UUCP> Reply-To: tim@amdcad.UUCP (Tim Olson) Organization: Advanced Micro Devices Lines: 44 In article <17473@felix.UUCP> jim@fritz.UUCP (Jim Gilbert) writes: | | From my casual perusal of the Am29000 instruction set I notice no | convenient register-to-register move in one cycle. I strongly suspect | I have overlooked something. | | Upon reflection however, it may be that with 192 registers and three | operand addressing that the need for register to register moves does | not exist. Yes, a large number of registers and 3-address operations reduce the need for register-to-register copies. They tend to be used mainly when a local variable (in a register) is passed as a parameter to a function without being used in an expression, or when return results are moved directly into a local register without further computation. The status register, which is affected by most arithmetic and logical operations, is not used in normal operation (its main purpose is to aid emulation of other processors). Branch conditions are computed explicitly into registers with compare instructions. Therefore, add dest, source, 0 or or dest, source, 0 can be used as a register-to-register move. | Is there a single instruction, no preconditions, no side-effect, | register to register move? (I can contemplate EXTRACTing from | destination to source, but that requires FC in ALU status word to | be preset.) If you really want no side-effects you can use any of the shift instructions, for example: sll dest, source, 0 as they do not update the status register. -- Tim Olson Advanced Micro Devices (tim@amdcad.amd.com)