在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,但英特尔的0xb功能无法正常工作。 在两台可用的英特尔计算机上尝试过,但没有运气。我在这里错过了什么?
首先检查功能可用性,请参阅手册 5.1.2,函数 01。
但是,这并没有回答枚举实际CPU内核的问题,这是我的意图。 如果有人不懒惰,请在评论中分享您对此主题的发现,谢谢。