>>>>> "Nicholas" == Nicholas Nethercote <[EMAIL PROTECTED]> writes:
Nicholas> This point about 33-bit machines is interesting because it
Nicholas> raises an optimisation scenario that hasn't been mentioned
Nicholas> so far.
Nicholas> Consider doing 32-bit integer arithmetic on 64-bit machines
Nicholas> which only support 64-bit arithmetic instructions. On such
Nicholas> machines you have to use sign-extensions or zero-extensions
Nicholas> after 64-bit operations to ensure wrap-around semantics
Nicholas> (unless you can prove that the operation will not overflow
Nicholas> the bottom 32 bits, or that the value will not be used in a
Nicholas> way that exposes the fact you're using 64-bit arithmetic).
Nicholas> But -- if I have understood correctly -- if the 32-bit
Nicholas> values are signed integers, a C compiler for such a machine
Nicholas> could legitimately omit the sign-extension.
Not necessarily. Not on MIPS, for example, because the spec requires
that signed values in registers must be sign extended or the
operations are undefined (not undefined for overflow -- undefined all
the time).
paul