X86处理器的型号,信息处理器家庭,高速缓存尺寸,时钟速度(频率)和制造商codename 等,存放在处理器的CPU ID寄存器组中。
通过执行CPU ID指令集查询,即可获取处理器的相关信息。CPU ID汇编指令使用使用eax作为输入参数(有时也用到ecx),eax、ebx、ecx、edx作为输出参数。
示例汇编代码如下:
1
2
mov eax, 1
cpuid
在C语言中(VC6以上)实现方法为:
32位模式下,可使用内嵌汇编来调用cpuid指令;64位模式下,VC编译器不支持内嵌汇编,此时可使用微软提供的Intrinsics函数,来执行cpuid指令,该函数支持32位和64位,该函数包含在 <intrinh>中。CPUID指令的对应Intrinsics函数为如下两个:
void __cpuid( int CPUInfo[4], int InfoType);
void __cpuidex( int CPUInfo[4], int InfoType, int ECXValue);
其中InfoType参数是CPUID指令的eax参数,即功能ID。ECXValue参数是CPUID指令的ecx参数,即子功能ID。CPUInfo参数用于接收输出的eax, ebx, ecx, edx这四个寄存器。早期的CPUID功能只要一个功能ID参数(eax),这时使用__cpuid函数。后来CPUID的功能扩展,又加了一个子功能ID(ecx)参数,这时用__cpuidex。64位环境下包含 <intrinh>后直接调用两个系统库函数即可。
以上就是关于windows下C/C++如何获得当前主机的信息: *** 作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率全部的内容,包括:windows下C/C++如何获得当前主机的信息: *** 作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率、C++ 怎么实现获取当前PC 硬盘 内存的大小以及已使用大小,加上CPU使用率、批处理怎样获取进程cpu使用率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)