【问题标题】:Detect processor type programmatically (Linux)以编程方式检测处理器类型 (Linux)
【发布时间】:2011-11-20 15:31:20
【问题描述】:

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

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

【问题讨论】:

    标签: linux processor


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      【解决方案3】:

      答案已经发布,但我会添加这个:

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

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

      【讨论】:

      • 谢谢...这正是我所需要的,因为我想检测 SSE/MMX 是否可用。查看其他响应,看起来这仅在 x86_64 与 ia32 上相关。
      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2017-02-20
      • 2013-01-20
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多