我正在尝试使用C++中的CPUID访问信息。到目前为止,我已经生成了此代码,无法继续。我在这里和网络上找到了一些有用的文章,但它们似乎对我没有帮助。
我应该只使用x88的指令和寄存器。这是代码。
int b[5] = {0} ;
for (int a = 0; a < 5 ; a++)
{
__cpuid (b,a) ;
std::cout << "The code " << a << " gives " << b[0] << std::endl;
}
我无法继续下去,因为我不明白如何从这个数组中逐位获取信息。我有这篇wiki和msdn文章解释了这个方案。我的问题不是很好,但我希望在这方面得到任何帮助或指导。
1条答案
按热度按时间u0njafvf1#
我想你的问题不是通过索引访问数组数据,就像你已经做过的
b[0]
,b[1]
等等一样,你需要一点bit(!)操作,你必须屏蔽掉你不感兴趣的位,并解释剩下的内容;例如:我会给予你4位(4-7),这是根据MSDN的模型。等等。
(int假设32位整数或更宽)
例如,如果您需要处理器类型,则需要:
然后向右移位(逻辑移位)3个“半字节”(12)。
将为您提供一个代表处理器类型的数字。(数字3是以2为基数的11,因此它是只选择最右边两位的正确掩码)。