X86-64处理器使用CPUID指令查看和识别身份。
4.1 测试是否支持CPUID指令
eflag寄存器的第21位是ID(Processor Feature Identification)标志位。
测试方法为:如果该位可以修改该标志位,则表示支持CPUID指令。
4.2 CPUID的术语和表达
leaf(叶)
一个功能号就是一个leaf叶。也就是要写入eax寄存器的值。
sub-leaf(子叶)
对于一些比较复杂的功能号,需要一个辅助的子号才能获取具体的信息。这个辅助的子号就是子叶。
在EAX寄存器中输入的是leaf(叶),在ECX寄存器中输入的是ECX寄存器的值是sub-leaf(子叶)。
CPUID指令的描述形式
如下所示:
CPUID.01H:EDX[6]
其中01H代表leaf,EDX是返回值所在寄存器,其中EDX[6]是返回值中的某个标志位(在这里,是PAE(Physical Address Extensions)功能是否支持)。
4.3 基本信息和扩展信息
通过CPUID获取的信息有两类:
- base(基本信息)
- extended(扩展信息)
获取信息需要先知道对应的leaf(功能号)