delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mailnull set sender to djgpp-bounces using -f |
Message-ID: | <3C620456.967C433F@yahoo.com> |
From: | CBFalconer <cbfalconer AT yahoo DOT com> |
Organization: | Ched Research |
X-Mailer: | Mozilla 4.75 [en] (Win98; U) |
X-Accept-Language: | en |
MIME-Version: | 1.0 |
Newsgroups: | comp.os.msdos.djgpp,comp.lang.c |
Subject: | Re: gcc 2.953 output - is this a bug? |
References: | <3C61E6BB DOT 7F9AD526 AT yahoo DOT com> <87d6zim2vy DOT fsf AT pfaff DOT stanford DOT edu> |
Lines: | 45 |
Date: | Thu, 07 Feb 2002 04:51:47 GMT |
NNTP-Posting-Host: | 12.90.167.91 |
X-Complaints-To: | abuse AT worldnet DOT att DOT net |
X-Trace: | bgtnsc05-news.ops.worldnet.att.net 1013057507 12.90.167.91 (Thu, 07 Feb 2002 04:51:47 GMT) |
NNTP-Posting-Date: | Thu, 07 Feb 2002 04:51:47 GMT |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Ben Pfaff wrote: > > CBFalconer <cbfalconer AT yahoo DOT com> writes: > > > Please look at the following disassembly: > > > > h = h * 37UL + (unsigned char) *string++; > > 585: 8d 04 d2 lea (%edx,%edx,8),%eax <<*** > > 588: 8d 04 82 lea (%edx,%eax,4),%eax <<*** > > > > look at the lines marked "<<***". I fail to see how this > > implements h * 37UL. > > Why, you mean it's not perfectly obvious? :-) > Here's a translation back to C of these lines: > eax = edx + 8 * edx > eax = edx + 4 * eax > Here's an equivalent for the first line: > eax = 9 * edx > which, performing a substitution on eax, means that the second > line becomes equivalent to > eax = edx + 4 * (9 * edx) > and from there it should be evident. > > (GCC is more clever than I thought.) Thanks. If I had a handy x86 manual I *might* have eventually figured it out. Incidentally, I found that gcc generated better code for: h = h * 31UL + *string++; than for: h = (h << 5) - h; h += *string++; the latter used an additional temporary. Which proves something or other. -- Chuck F (cbfalconer AT yahoo DOT com) (cbfalconer AT XXXXworldnet DOT att DOT net) Available for consulting/temporary embedded and systems. (Remove "XXXX" from reply address. yahoo works unmodified) mailto:uce AT ftc DOT gov (for spambots to harvest)
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |