Mail Archives: djgpp/1998/07/11/08:15:32
This is where I point out that I can't tell left from right, though it
normally does not cause a programming problems (Not major one ;)
In article <VqrTZAA4qlp1Ew16 AT foobar DOT co DOT uk>, Paul Shirley <Paul AT chocolat.
obvious.fake.foobar.co.uk> writes
>In article <35A5FC72 DOT C235F6D9 AT eik DOT bme DOT hu>, Dr. András Sólyom
><solyom AT eik DOT bme DOT hu> writes
>>For the left shift operator BCC uses an
>> SHL (shift left)
>>instruction, while GCC uses
>> SAL (arithmetic shift left)
>>I think these differ in how they uses the CARRY bit
>>
>>why is it so?
>> AFAIK the implementation of the left shift operator is left to the
>>compiler
>>maker by the ANSI C specification.
>
>The >> operator is clearly defined. For signed operands it does an
>arithmetic shift, unsigned ops get a zero extending shift. If you see
>anything different its a compiler bug.
(Having realised << is a left shift;)
The reason you see SAL or SHL is that they are the same instruction,
given 2 names at the whim of some Intel engineer, used at the whim of
the compiler writers.
The carry (if that were the difference) would be irrelevant since C
source cannot see a carry, compiler writers can do what they like with
it.
---
Paul Shirley: my email address is 'obvious'ly anti-spammed
- Raw text -