在 32 位和 64 位计算机上的 CPUID 工作有什么区别?



我的问题是CPUID在32位和64位计算机上工作有什么区别?也许我们调用CPUID或返回结果的方式存在一些差异,例如,我们应该检查RAX和其他寄存器,也许存储在它们中的信息是不同的

根据英特尔SDM

该指令对64B和非64B

均相同

但是,即使它的行为相同,请记住,CPUID指令在所有模式下都可以清除RAX/RBX/RCX/RDX寄存器的32位,因此,如果您在上面的寄存器中检查最高的32位,您将读取0x0。

并且由于CPUID正在查看EAX(在某些情况下在ECX)下面的两个代码都将返回相同的数据:

mov RAX, 0xFFFF_FFFF_0000_000
cpuid

mov RAX, 0x0
cpuid

相关内容

  • 没有找到相关文章

最新更新