Re: question about gcc assembly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Coline Lelong-Pantel wrote:
Hi

I've compiled a short program with two different gcc versions
(3.2.3 and 3.4.3) but it seems that the produced assembly code
isn't the same.

In fact 3.4.3 produce a more important code. For example when
gcc 3.2.3 produces :
movl	$0x405c28f6, -4(%ebp)

gcc 3.4.3 may use:
movl	$0x405c28f6, %eax
movl	%eax, -4(%ebp)

I wonder why it now uses %eax register ? And is there any way
to prevent this, in order to have similar assembly code with
both gcc versions ? Maybe some kind of option ?

Thanks for your answers.


Both gcc versions you quote are fairly old; if efficiency interests you, you might try a current version. Were you able to show a significant difference in performance on a CPU which is important to you? I would guess the most important reason for avoiding use of eax here would be to keep that register available for other use. The optimization could be affected by compiler switches (-Os, -O2) or by selection of -march option, and many other possibilities. Newer CPUs have hardware merging of operations, as well as stalls on certain immediate data operations, so it is impossible to know the performance implications from what you have presented.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux