| Dick Hendrickson 2006-07-21, 7:01 pm |
|
glen herrmannsfeldt wrote:
> Shmuel (Seymour J.) Metz wrote:
> (snip)
>
>
>
>
>
>
>
>
>
> Well, even more, the way I understand the logic of some machines,
> as long as no arguments are negative zero they won't generate a
> negative zero. 0+(-0) doesn't satisfy that case.
>
> For those who care, consider that ones complement arithmetic
> will normally generate -0 instead of +0. Adding x and -x generates
> all ones with no end around carry. If you add the ones complements
> of the two operands you get the complement of the result, and still
> negative zero for zero sum. The complement of that will be the correct
> sum, and won't be negative zero unless both of the arguments are -0.
It's been a long time, but my recollection is that the CDC
machines used a subtractor rather than an adder. This was
done to mostly eliminate the -0 problem. Rather than do
X + Y, they did X - (-Y). Then, if Y happened to be -X the
subtractor saw X + (-X) as X - (--X) which worked out to
X - X and then to zero.
I think the only problem was 0 + 0 which became 0 - (-0)
and then -0 .
>
> In addition, note that ECL supplies a signal and its complement without
> any extra logic needed.
Maybe, but the CDC 1604s used discrete parts. Transistors,
resistors, on a 3 inch by 3 inch circuit board. I'm pretty
sure that some design decisions were heavily influenced by
parts count.
>
> In any case, a high level language has to get it right even
> if it takes extra instructions.
Absolutely.
Dick Hendrickson
>
> -- glen
>
|