![]() |
1
13
这个
对于英特尔,这个字符串是“GenuineIntel”。对于AMD来说,这是“真正的AMD”。其他制造x86芯片的公司也有自己的字符串。这个
Wikipedia page
给
您实际上只需要检查ECX是否与最后四个字符匹配。你不能使用前四个,因为一些Transmeta CPU也以“正版”开头
如果你将其中的每个字节转换为一个字符,它们会看起来是向后的。这只是x86的小端设计的结果。如果你将寄存器复制到内存中,并将其视为字符串,它就会正常工作。 示例代码:
编辑:还有一件事——这很容易变成
|
![]() |
2
11
如果你在Linux上(或在Cygwin下运行的Windows上),你可以通过读取特殊文件来弄清楚
如果你知道你在x86架构上运行,一种不太便携的方法是使用CPUID指令:
|
![]() |
3
2
在Windows上,您可以使用 GetNativeSystemInfo 功能 在Linux上,尝试 sysinfo |
![]() |
4
1
你可能根本不应该检查。相反,请检查CPU是否支持 特征 您需要,例如SSE3。两款英特尔芯片之间的差异可能比AMD和英特尔芯片之间更大。 |
![]() |
5
0
您必须在Makefile arch中定义它=
|
![]() |
6
0
我发布了一个小项目: http://sourceforge.net/projects/cpp-cpu-monitor/ 它使用 libgtop 库,并通过UDP公开数据。您可以根据需要进行修改。GPL开源。如果您对此有任何疑问,请提问。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 5 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |