Subject: Re: [PATCH GIT 0.6] make use of register variables & size_t

From: Matthias-Christian Ott <[email-masked]>
Date: Mon, 25 Apr 2005 15:01:47 +0200

Matthias-Christian Ott wrote:
> 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 [email-masked]
> 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