Re: [PATCH GIT 0.6] make use of register variables & size_t
- From
- Matthias-Christian Ott <matthias.christian@tiscali.de>
- Date
- Apr 25, 2005, 13:01 UTC
- Message-ID
- <426CEA3B.50300@tiscali.de>
- In-Reply-To
- <426CE904.9010505@tiscali.de>
Matthias-Christian Ott wrote:
Show 34 quoted lines
> Rene Rebe wrote: > >> Hi, >> >> Matthias-Christian Ott wrote: >> >>> The "git" didn't try store small variables, which aren't referenced, >>> in the processor registers. It also didn't use the size_t type. I >>> corrected a C++ style comment too. >> >> >> >> Well, modern compilers take register as a non-binding hint. Your >> register storage specification for those loop counters will not make >> any change. You have not looked into the resulting binary? >> >> Also // is valid C99 ... >> >> Yours, >> > But if you use only /* */ comments and there's a // comment it looks > ugly :). > > I've disassembled the code and it for me (I'm not a professional > assembler coder) it looks like it's stored in a register because the ebp > offsets are smaller and the gcc (4.0) wouldn't cause an error if you > reference them. > > Matthias-Christian Ott > - > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
Here's some example code (diff of the assembler codes) which shows what I mean:
- movl %eax, -8(%ebp)
+ movl %eax, -4(%ebp)
[..]
- leal 1(%eax), %ecx
- movl -52(%ebp), %edx
+ leal 1(%eax), %edx
movl 12(%ebp), %eax
- subl %edx, %eax
- movl %eax, %edx
- movl -52(%ebp), %eax
+ movl %eax, %ecx
+ subl -80(%ebp), %ecx
+ movl -80(%ebp), %eax
sall $2, %eax
movl %eax, %ebx
addl 8(%ebp), %ebx