检测CPU特性(CPU feature) :现在的intel CPU,台式机的好点的都支持Hyper-Threading了,移动的要支持Speed Sted。这些都是CPU的特性。CPU的特性可以通过cpuid获得,参数是eax = 1,返回值放在edx和ecx,通过验证edx或者ecx的某一个bit,可以获得CPU的一个特性是否被支持。CPUID,http://www.cpuid.com,比如说,edx的bit 32代表是否支持MMX,edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed sted。
CPUID使用eax作为输入参数,eax,ebx,ecx,edx作为输出参数,针对不同的输入参数eax的值,输出参数的意义都不相同。为了更好的在C++中使用CPUID指令,可以使用类对指令进行封装,在类中定义一个专门的函数负责cpuid的执行,CPUID他需要一个输入参数。还需要定义四个成员变量存储CPUID执行以后返回来的值。由于这四个寄存器都是32位长的,可以使用unsinged long类型变量存储。把eax = 0作为输入参数,可以得到CPU的制造商信息。CPUID指令执行以后,会返回一个12字符的制造商信息,前四个字符的ASC码按低位到高位放在ebx,中间四个放在edx,最后四个字符放在ecx。
美国,综合网站,CPUID官网:http://www.cpuid.com