【问题标题】:cpuid function 0Bh, intel, always empty registerscpuid 函数 0Bh,intel,总是空寄存器
【发布时间】: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 年这样的老怪物开始。

标签: assembly x86 cpuid


【解决方案1】:

首先检查功能可用性,参见手册,5.1.2,功能 01。

但是,这并不能回答我的意图是枚举实际 CPU 内核的问题。如果有人不懒,请在 cmets 中分享您对此主题的发现,谢谢。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2010-12-11
    • 2023-04-01
    • 2014-02-04
    • 2014-11-19
    • 2012-02-26
    • 2015-03-28
    • 2012-09-19
    相关资源
    最近更新 更多