以编程方式检测处理器类型(Linux)

时间:2011-09-19 22:43:32

标签: linux processor

我正在用gcc编写一个程序,它有asm语言用于性能关键部分,我想确保在运行时程序运行在正确的架构上。特别是,我需要在Linux上区分ia64(Itanium)和x86_64。

我只是读/ proc / cpuinfo吗?看起来很笨,但我找不到合适的内核调用。

3 个答案:

答案 0 :(得分:2)

/proc/cpuinfo是linux上CPU信息的标准接口。

这是最佳选择,因为它旨在独立于架构。

答案 1 :(得分:2)

IA64和x86_64是完全不同的架构。为一个构建的程序根本不会在另一个上运行,所以你的问题没有意义(实际上,与x86指令集的不兼容是IA64市场渗透率低的原因之一,因为基于IA64的系统不能运行各种现有的,基于32位x86的传统应用程序。)

您可以做的最好的事情是编译程序的两个不同版本,然后使用包装器脚本在用户调用程序时选择适当的二进制文件。

答案 2 :(得分:2)

答案已经发布,但我会补充一下:

如果机器是x86或x64,您可以通过cpuid指令获取更详细的信息。

http://en.wikipedia.org/wiki/CPUID