我想知道这里的人是否有一些很好的C++ CPUID实现示例,可以从任何托管的.net语言中引用.
此外,如果不是这种情况,我应该知道X86和X64之间的某些实现差异吗?
我想使用CPUID获取我的软件运行的机器上的信息(crashreporting等...),我想尽可能保持所有内容的兼容性.
我问的主要原因是因为我在编写可能是所有机器指令的内容时总是菜鸟,尽管我有关于CPU寄存器的基本知识等等...
在人们开始告诉我谷歌之前:我在网上找到了一些例子,但通常他们并不打算允许来自托管代码的交互,并且没有一个示例针对X86和X64.大多数示例似乎都是特定于X86的.
我正在使用英特尔内在函数编写程序.我想使用_mm_permute_pd内在的,仅在具有AVX的CPU上可用.对于没有AVX的CPU我可以使用,_mm_shuffle_pd但根据规格它比它慢得多_mm_permute_pd.英特尔内部函数的头文件是否定义了允许我区分是否支持AVX的常量,以便我可以这样写:
#ifdef __IS_AVX_SUPPORTED__ // is there sth like this defined?
// use _mm_permute_pd
# else
// use _mm_shuffle_pd
#endif
Run Code Online (Sandbox Code Playgroud)
?我找到了这个教程,它展示了如何执行运行时检查,但我需要对当前机器进行静态的编译时检查.