少し好奇心が見つかりました。gccによって生成されたダミームーブ
00000000004019ae: test %si,%si
00000000004019b1: movups %xmm0,%xmm0
00000000004019b4: je 0x401f40 <main(int, char**)+1904>
質問:2番目の命令はどのような目的のために使用されますか?GCCは次のコードを生成しているようです。それは/それ/何かのように見えません。ですから、プログラムを命令キャッシュに揃える最適化はありますか?それとも、アウト・オブ・オーダーで実行されているのでしょうか? (私は-mtune=native
とNehalemでコンパイルしています。
緊急のことはもちろんありません。
なぜmovapsの代わりにmovapsを使用するのですか? – PhiS
@PhiS、私は分かりません。これらは両方ともレジスタのみのオペランドと同じです。 –
ああ、完璧な答え!ありがとう(とupvoted)。私はmovaps/movupsが浮動小数点に変換されたことを知らなかった、私はそれがまっすぐなコピーをしたと思ったが、それは完璧な意味があります。そして、gccは-Oを指定しない限り、デフォルトでそれを行います。私は信じています。 – vpostman