Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!pyramid!voder!apple!baum From: baum@apple.UUCP (Allen J. Baum) Newsgroups: comp.arch Subject: Re: Brain-Clogging Decimal (Was: Re: Wirth's challenge (Was Re: RISC)) Message-ID: <6958@apple.UUCP> Date: 10 Dec 87 02:14:23 GMT References: <6901@apple.UUCP> <15782@watmath.waterloo.edu> Reply-To: baum@apple.UUCP (Allen Baum) Organization: Apple Computer, Inc. Lines: 33 -------- [] >In article <15782@watmath.waterloo.edu> ccplumb@watmath.waterloo.edu (Colin Plumb) writes: >This got me thinking (with apologies for ever uttering anything faintly >resembling praise for IBM), that the 360/370/whatever architecture isn't >all that bad. (Perhaps you can tell me via mail what the problems are. >I'm interested, but it would probably be ancient headgear to others.) > >With the exception, of course, of all the packed decimal divide stuff. The idea of an architecture, to the extent that IBM did it in the 360/370 is amazing. You can build compatible systems just by looking at the P.O.O. No one else does it as well. All the creepy little corner cases are there. The actual architecture is none too good. For example, no prohibition about writing into the instruction stream, which gives cache designers headaches. The Test-under-Mask should be a simple Test-Bit, or even TestBit&Branch. Branches should be PC relative! Base+Index+Displacement is not necessary & an utter pain. You can dissect the instruction set to death and find much problems. The HP precision has some minimal support for decimal operations: Decimal Correct and Intermediate Decimal Correct. A decimal add would be something like: (assume packed, unsigned RegA+regB->RegC) Add RegA+0x66666666 -> temp ;optionally trap if any digit carry-- this ;checks for illegal decimal ops Add RegB+temp -> RegC ;save digit carries DCor RegC -> RegC ;subtracts 6 every there was no digit carry The intermediate decimal correct is similar; it combines the DCor with the add of 0x66666666. -- {decwrl,hplabs,ihnp4}!nsc!apple!baum (408)973-3385