当我运行g++ -Q --help=target时,我得到
-msse2 [disabled]

但是,如果我使用默认选项创建的汇编代码为
g++ -g mycode.cpp -o mycode.o; objdump -S mycode.o > default

和一个sse2版本,
g++ -g -msse2 mycode.cpp -o mycode.sse2.o; objdump -S mycode.sse2.o > sse2

最后是非sse2版本,
g++ -g -mno-sse2 mycode.cpp -o mycode.nosse2.o; objdump -S mycode.nosse2.o > nosse2
我基本上看不到defaultsse2之间的区别,但是defaultnosse2之间的区别很大,所以这告诉我,默认情况下,即使我被告知已禁用它,g++仍在使用sse2指令。这里?

如果有问题,我正在Linux下使用gcc-4.4.7编译Xeon E5-2680。

最佳答案

如果您是为64位编译的,那么这是完全好的现象,并且已记录在案。

in the gcc docs所述,在使用x86-64编译器时,默认情况下启用SSE指令集:

10-07 15:47