当我运行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
我基本上看不到default
和sse2
之间的区别,但是default
和nosse2
之间的区别很大,所以这告诉我,默认情况下,即使我被告知已禁用它,g++仍在使用sse2
指令。这里?
如果有问题,我正在Linux下使用gcc-4.4.7编译Xeon E5-2680。
最佳答案
如果您是为64位编译的,那么这是完全好的现象,并且已记录在案。
如in the gcc docs所述,在使用x86-64编译器时,默认情况下启用SSE指令集: