是否可以编译自动使用不同处理器的东西?

时间:2011-01-08 00:12:38

标签: optimization gcc compilation

是否可以编译一些自动利用它在指令集上运行的不同处理器的东西?

理想情况下,在gcc和c上,不在代码中明确地执行。

将-mtune(单独)做吗?

1 个答案:

答案 0 :(得分:3)

gcc的最新版本有-march=native,它将生成代码以使用运行编译器的机器上可用的所有指令集扩展,但它不会生成在运行时检测到哪些扩展可用的二进制文件。可以编写代码来检测哪些扩展可用,并根据它使用不同的代码路径(这是对游戏引擎等性能敏感代码的常用技术),但我不知道有任何自动生成此代码的工具代码和代码的不同版本。

如果要创建可在多个不同体系结构(如x86和ARM)上运行的二进制文件,则需要创建一个名为 fat binary 的东西,或者在Apple的营销术语中创建一个 >通用二进制文件:这需要为每个体系结构编译一次代码,并将不同体系结构的二进制文件链接到同一个文件中。这仅适用于支持胖二进制文件的操作系统,因为操作系统需要知道它必须仅为正确的体系结构加载段。