我想使用该cpuid
指令查询 CPU 功能。我对所有其他 CPUID 级别感兴趣,包括0x80000000
和0xc0000000
(Centaur)。问题是我看不到确定是否支持特定级别的明确方法。
特别是,我担心Intel(R) 64 and IA-32 Architectures Software Developer's Manual中的这一特殊内容:
返回两种类型的信息:基本功能信息和扩展功能信息。如果为 CPUID.EAX 输入的值高于该处理器的基本或扩展功能的最大输入值,则返回最高基本信息叶的数据。
这意味着,如果我cpuid
使用EAX = 0x80000000
or进行查询EAX = 0xc0000000
,我可以获得 中的最大 CPUID 级别EAX
,或者输出一些随机的基本级别叶。
是否有可靠且相对简单的方法来确定是否支持特定级别?