我一直在寻找确定 CPU 及其功能的方法(例如 SEE、SSE2 等)。
然而,我发现的所有方法都涉及使用 cpuid 指令的汇编代码。鉴于编译器甚至目标之间在 c/c++ 中进行汇编的不同方式(在 VC 下没有用于 64 位目标的内联汇编),我宁愿避免这种情况。
是否有一些简单的库或操作系统函数(适用于 windows 和 linux)来获取这些信息?
目前我只对使用 x86 和 x86-64 CPU 的平台感兴趣,而且我绝对需要至少支持 AMD 和 Intel。
我一直在寻找确定 CPU 及其功能的方法(例如 SEE、SSE2 等)。
然而,我发现的所有方法都涉及使用 cpuid 指令的汇编代码。鉴于编译器甚至目标之间在 c/c++ 中进行汇编的不同方式(在 VC 下没有用于 64 位目标的内联汇编),我宁愿避免这种情况。
是否有一些简单的库或操作系统函数(适用于 windows 和 linux)来获取这些信息?
目前我只对使用 x86 和 x86-64 CPU 的平台感兴趣,而且我绝对需要至少支持 AMD 和 Intel。
编辑:起初,我在谷歌上搜索“libcpuid”以记住与同行程序员的对话,谷歌搜索将我指向这个看起来相当过时的sourceforge 页面。然后我注意到这是“libcpu”的项目页面。
实际上,确实有一个libcpuid可能适合您的需求。
上次找这样的库时,发现了crisscross。虽然它是 C++。
还有geekinfo。
但我不知道一个只做 cpuid 的跨平台库。
linux下查看/proc/cpuinfo
这如此依赖于硬件——这是操作系统通常会屏蔽你的一个方面——要求它是跨平台的有点困难。
拥有它会很有用,但我担心您可能只需要枚举您想要支持的 CPU 和功能的交叉产品,乘以操作系统的数量(这里是两个)并为所有人编写测试。我不认为它已经完成 - 如果我忽略了某些东西,肯定有人会纠正我。
那将是一个有用的图书馆,祝你好运!