Quoting Christian Franke <[EMAIL PROTECTED]>:
GCC optimizer does a good job optimizing register use, but function
call is still better:
Debian gcc 4.1.2-7:
inline (portable)=357,asm (%%eax)=126, asm (%0)=107, function=104
Cygwin gcc 3.4.4:
inline (portable)=340, asm (%%eax)=124, asm (%0)=104, function=96
Thank you for testing! We could do better with the bswap instruction,
but it appeared in 486. I think we still need to support 386.
I understand you are counting the function body, so the
calling/inlining code is bigger by more than just 3 or 8 bytes. If
the code grows, so will the number of the calls or the inline sites.
Yet the function size will remain the same.
Chances are that if we use 3 "rol"s and allow all general purpose
registers, we may save a couple more bytes, because the assembler will
still convert rol to xchg when possible, whereas gcc will be able to
use non-e*x registers if needed.
But I don't want to ask you to spend any more time on it. I think
we'll have to go with the function for 32 bit.
--
Regards,
Pavel Roskin
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel