跳转至

检查 x86 CPU 特性

语法

  cpuid [--ext] [--ecx] <bit number>

示例

检查 CPU 是否支持 64 位运算("long mode")

  cpuid --ext 29 && set arch x86_64 || set arch i386

检查 CPU 是否支持物理地址扩展("PAE")

  cpuid 6 && set pae yes ||

检查 CPU 是否支持硬件虚拟化

  cpuid --ecx 5 && set vmx yes ||
  cpuid --ext --ecx 2 && set svm yes ||
  isset ${vmx} || isset ${svm} && set hw_virt yes ||

描述

使用 CPUID 指令检查指定的 x86 CPU 特性是否存在。如果指定了 --ext 选项,则检查扩展特性集,否则检查标准特性集。如果指定了 --ecx 选项,则检查包含在 %ecx 寄存器中的特性集,否则检查包含在 %edx 寄存器中的特性集。

一些常用的可检查特性:

特性集 寄存器 特性 命令
扩展 %edx 29 长模式(64 位) cpuid --ext 29
标准 %edx 28 超线程(HTT) cpuid 28
标准 %edx 6 物理地址扩展(PAE) cpuid 6
标准 %ecx 5 Intel 虚拟机扩展(VMX) cpuid --ecx 5
扩展 %ecx 2 AMD 安全虚拟机(SVM) cpuid --ext --ecx 2
标准 %edx 15 条件传送(CMOV) cpuid 15

命令状态

成功 指定的 x86 CPU 特性存在
失败 指定的 x86 CPU 特性不存在

另请参阅

备注

标准特性集表示以 %eax=0x00000001 调用 CPUID%ecx%edx 返回的值。

扩展特性集表示以 %eax=0x80000001 调用 CPUID%ecx%edx 返回的值。