CPUID
CPUID是CPU内置的一个指令(个人理解),有些CPU不一定有,网上有怎么查询是否有这条指令的方式,比较菜,不是很明白。简单说一下自己现在明白的东西,做个简单记录,以作备用。
CPUID的作用是读取处理器的各种标识和特性信息,如:CPU型号和支持功能等。CPUID会有一个输入参数(可能有两个,但是我用的是一个),这个参数会传递到EAX寄存器(输入)中,然后CPUID的输出信息会保存在EAX,EBX,ECX和EDX(输出,都是32位bit)之中。(说明:EAX在输入和输出中都使用了),插入一段我借鉴别人的代码,以及自己的理解,下面会有代码出处。
__cpuid(CPUInfo, 0);//向EAX中输入0H nIds = CPUInfo[0];//index=0的输出EAX中是最大输入值 memset(CPUString, 0, sizeof(CPUString));//这一步是初始化,改变sizeof的大小,会有一定的妙用
//下面关键是数据的操作 *((int*)CPUString) = CPUInfo[1]; *((int*)(CPUString + 4)) = CPUInfo[3]; *((int*)(CPUString + 8)) = CPUInfo[2];
下面是各EAX值的用处。(CPU不同不知道会不会有差别,仅供参考)
分享几个链接,是我查资料时的主要参考:
(11条消息) Intel x86_64 CPUID指令介绍_小立爱学习的博客-CSDN博客_cpuid指令(上面很多图片都是从这里直接cv的)
(11条消息) __cpuid_YiYueHuan的博客-CSDN博客___cpuid(这篇文章是我代码的主要参考,虽然介绍不多,但是用处很大)
接下来是我的GitHub地址:https://github.com/ycgmhh/CPUID.git