From: Paul Shirley Newsgroups: comp.os.msdos.djgpp Subject: Re: Infinite loop??? Date: Sat, 11 Jul 1998 12:24:31 +0100 Organization: wot? me? Message-ID: References: <35A3D8C3 DOT 208E6D23 AT cyberdude DOT com> <35A5FC72 DOT C235F6D9 AT eik DOT bme DOT hu> NNTP-Posting-Host: chocolat.foobar.co.uk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Lines: 32 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk 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 , Paul Shirley writes >In article <35A5FC72 DOT C235F6D9 AT eik DOT bme DOT hu>, Dr. András Sólyom > 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