Whither UCMPH?
Carl S. Gutekunst
csg at pyramid.pyramid.com
Sun Nov 27 14:04:20 AEST 1988
In article <14394 at comp.vuw.ac.nz> jonathan at comp.vuw.ac.nz (Jonathan) writes:
>Pyramid's machine architecture includes a variety of integer
>compare instructions for signed and unsigned compares:
>
> [table deleted]
>
>UCMPH (opcode 67) is conspicuous by its absence.
Speaking as a datacommie who knows zilch about architecture or compilers....
I'd say the other non-integer compares are conspicuous by their presense.
Everything besides the int compare is unnecessary, to wit:
- For variables in registers, you (the compiler writer) can make sure that the
value is *always* an int. This costs you nothing. So all compares to non-
floating values in registers always use cmpw and ucmpw.
- If it's not in a register, you very likely have to move it into a register
before you can compare to it. So you use the apropriate movzbw, cvtbw, or
whatever. And now you're comparing ints again.
>Is it elsewhere? [[we don't actually have an up-to-date assembler manual....
It's not in my assembler manual either.
>Wasn't it Wirth who said that RISC should stand for Regular Instruction Set
>Computer :-) ?
Since the Pyramid 90x and 9000 CPUs are microcoded, they accumulated quite a
lot of garbage that someone thought was a "pretty neat idea" at the time. :-)
Seriously, I believe there was some turmoil on the part of the designers as to
what to add and what to leave out; having microcode allowed the machine to be
designed more quickly, but created the illusion that choices weren't critical.
This is what makes architectures crufty and difficult to scale; backwards com-
patability dictates that you drag along instructions that you don't use any
more.
I'd like to see some of these squeezed out in the new machines, but like I
said, I do X.25, not CPUs....
<csg>
More information about the Comp.sys.pyramid
mailing list