【发布时间】:2013-01-30 14:00:02
【问题描述】:
在 Linux(作为 root)和 Windows(XP,作为管理员)上,我总是在使用 eax = 0xB 调用 cpuid 后设置一个空寄存器。 根据官方手册,http://www.intel.com/content/www/us/en/processors/processor-identification-cpuid-instruction-note.html我写了如下代码:
mov eax,0xb
xor ecx,ecx
cpuid
; EAX = EBX = ECX = EDX = 0
在此之前我已经成功编写了基于 'cpuid' 指令的 AMD cpuinfo,但是 intel 的 0xb 函数不起作用。尝试了两台可用的英特尔计算机,但没有运气。我在这里错过了什么?
【问题讨论】:
-
英特尔手册 pdf,第 41-42 页 (5.1.12)
-
系统有X2APIC吗?它有多个线程或核心吗?这是虚拟机吗?
-
所以不支持。您的问题中没有任何内容表明您的处理器确实支持它。
-
抱歉,该手册部分中没有提到任何不支持的内容。测试盒有 Atom N455(Linux real box)和 Intel Celeron Dual Core T3100(Linux real box 和 Windows in virtualbox)。
-
我一直在尝试收集有关真实处理器内核数量的信息。我用 cpuid 做错了吗?我需要一些可以在 Windows 上使用的东西,从 2000 年这样的老怪物开始。