INTEL处理器识别和CPUID指令(一) CPUID指令与状态寄存器的演变

按:本系列翻译自INTEl官方的CPUID指令文档《Intel® Processor Identification and the CPUID Instruction》,由于我自身英语水平有限,之前顶多也就在上学时翻译过一些英语短文,翻译这种对准确性要求较高的文档,错误在所难免,这次就当做是练笔吧,以后会进行修改完善。

      从INTEL486(*)开始,INTEL处理器提供了一个直接的方法来检测其内部架构能否执行CPUID指令。该方法利用标志寄存器EFLAGS的第21位(最左边为第31位,最右边为第0位)进行检测。如果应用程序(原文为sofaware)能够修改这个标志位的值,则CPUID指令能够执行(如下图所示)。PUSHF、PUSHFD指令和POPF、POPFD指令用于访问EFLAGS寄存器中的状态信息。本文档后面的程序演示了如何用PUSHFD指令和POPFD指令读写EFLAGS寄存器的ID标志位(即第21位)。


*实际上 只有部分486TM处理器和后续的INTEL处理器能够执行CPUID指令。INTEL 386TM处理器的EFLAGS寄存器的第21位是不能被应用程序(原文为sofaware)修改的,并且不能执行CPUID指令。在不支持CPUID指令的处理器上执行该指令会导致一个“invalid opcode”异常。

你可能感兴趣的:(CPUID)