如何在GCC 4.4.7-17中禁用BMI指令

埃里克·李

我在gcc 4.4.7-17上有问题。我在服务器上编译了一个程序,然后在另一台服务器上运行了该程序,但由于非法指令而崩溃了。

我怀疑这两个服务器之间的差异可能会导致此异常。是的,我发现服务器编译程序具有CPU标志bmi1和bmi2,但是运行该程序的服务器却没有!

使用gcc时如何禁用bmi指令?

彼得·科德斯

-mbmi并且-mbmi2默认情况下未启用。

您可能通过-march=native在具有与目标计算机不同硬件的服务器上进行构建来启用它们不要那样做 使用-O3 -march=ivybridge-march=bdver2(AMD Piledriver = Bulldozer第2版),或使用适合于制作二进制文件的二进制文件,这些二进制文件可以使用目标支持的所有指令集扩展,并针对目标进行了调整。-march=x表示-mtune=x)。

另外,如果可能,请使用较新版本的gcc。4.4现在已经很老了。gcc 5.3是gcc5系列的最新版本,在许多情况下可以提供更好的代码。

gcc6也已发布,但是还没发布。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章