GCC (-S オプション) によって生成されたアセンブリ コードについて質問があります。私はアセンブリ言語に不慣れで、それについてほとんど知らないので、質問は非常に原始的です。それでも、誰かが答えてくれることを願っています:
次の C コードがあるとします。
main(){
int x = 15;
int y = 6;
int z = x - y;
return 0;
}
アセンブリ コード (特に int z = x - y に対応する部分) を見ると、次のことがわかります。
主要:
...
subl $16, %esp
movl $15, -4(%ebp)
movl $6, -8(%ebp)
movl -8(%ebp), %eax
movl -4(%ebp), %edx
movl %edx, %ecx
subl %eax, %ecx
movl %ecx, %eax
movl %eax, -12(%ebp)
...
GCC がこのようなものを生成しないのはなぜですか。
主要:
...
movl $15, -4(%ebp)
movl $6, -8(%ebp)
movl -8(%ebp), %edx
movl -4(%ebp), %eax
subl %edx, %eax
movl %eax, -12(%ebp)
...
PS
Linux zion-5 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux gcc バージョン 4.4.3 (Ubuntu 4.4.3-4ubuntu5)