Mail Archives: djgpp/1998/07/10/16:18:42
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.
You should check the type of the value being shifted to explain the
difference you see. In particular shifting a char type may cause
differences between compilers because a char may be signed or unsigned
by default in older compilers.
---
Paul Shirley: my email address is 'obvious'ly anti-spammed
- Raw text -