代码之家  ›  专栏  ›  技术社区  ›  Fire Lancer

检测不带程序集的CPU功能

  •  3
  • Fire Lancer  · 技术社区  · 15 年前

    我一直在寻找确定CPU及其功能的方法(如SEE、SSE2等)。

    然而,我发现的所有方法都涉及使用cpuid指令的汇编代码。给定编译器和目标之间的C/C++之间的汇编不同的方式(在VC下没有64位目标的内联汇编),我宁愿避免。

    是否有一些简单的库,或者OS函数(对于Windows和Linux)来获取这些信息?

    目前我只对使用x86和x86-64 CPU的平台感兴趣,我坚决要求至少支持AMD和Intel。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Gregory Pakosz    15 年前

    编辑:一开始,我在谷歌上搜索“libcpuid”,还记得和同行程序员的对话,谷歌的搜索结果让我想到了这一点。 sourceforge page 这看起来很过时。然后我注意到它是“libcpu”的项目页面。

    实际上,有一个 libcpuid 那可能适合你的需要。


    上次我找这样的图书馆时,我发现 crisscross . 不过是C++。

    也有 geekinfo .

    但我不知道一个跨平台的库只做cpuid。

        2
  •  1
  •   Thorbjørn Ravn Andersen    15 年前

    在linux peek in/proc/cpuinfo下

        3
  •  0
  •   Dirk is no longer here    15 年前

    这是一个依赖于硬件的操作系统——这是操作系统通常保护你的一个方面——要求它跨平台是有点困难的。

    这是很有用的,但是我担心你可能只需要列举出你想要支持的CPU和特性的交叉产品,乘以OSS的数量(这里两个),然后为所有的测试编写测试。我不认为这已经完成了——如果我忽略了一些事情,肯定会有人纠正我。

    那将是一个有用的图书馆,所以祝你在努力中好运!