Date: Wed, 30 Mar 2005 12:45:39 +1000
From: robin <[log in to unmask]>
The discussion about logical representations may be summarised
as follows.
I beg to differ. This is not a summary, it is your opinions.
3. The negative 1/0 model is the least satisfactory of the three:
(a) it may not be appropriate on a machine employing ones
complement ALU.
If it doesn't work, don't use it. I'm not trying to say ~0 (you
insist on calling it -1) / 0 is best; I'm saying it is as reasonable
as any other. Hardware features may or may not dictate whether it
gets used. And I suspect it works just fine on a ones-complement
machine.
(b) It requires an entire word to be stored.
Says who? In C, I can store ~0 in a (signed or unsigned char, short,
int, long, and long long, all of which have potentially different
sizes. "All I'm doing" is flooding the storage (of whatever size)
with the same bits, either all 1s or all 0s.
(c) It may inhibit optimization.
Unsubstantiated claim.
(d) Conversion to/from INTEGER not straightforward.
You continue to claim this after it has been counter-demonstrated.
The easiest way in fortran to convert them is to EQUIVALENCE a logical
with an integer. In one case, the compiler will interpret the storage
(I dare say "bits" because that sends you off into tangents) as a
logical, and in the other case as an integer.
(e) Requires extra time and instructrion space to generate.
Again, you keep claiming this against the evidence. Yes, on Alpha it
requires an extra instruction to convert the hardware-generaged 1/0 to
-1/0. On IA64 the compare sets a predicate bit and you have to
generate either value under predication, so the penalty for this
scheme is no different than any other. In case you haven't been
aware, compilers are pretty good these days about scheduling
instructions.
|