话不多说,先看运行截图:


代码如下:
#include <iostream>
#include <string>
#include <windows.h>
//存4个寄存器值
DWORD deax, debx, decx, dedx;
void initCpu(DWORD veax)
{
__asm
{
mov eax, veax
cpuid
mov deax, eax
mov debx, ebx
mov decx, ecx
mov dedx, edx
}
}
long getCpuFreq()
{
int start, over;
_asm
{
RDTSC
mov start, eax
}
Sleep(50);
_asm
{
RDTSC
mov over, eax
}
return (over - start) / 50000;
}
std::string getManufactureID()
{
char manuID[25];
memset(manuID, 0, sizeof(manuID));
initCpu(0);
memcpy(manuID + 0, &debx, 4); // copy to array
memcpy(manuID + 4, &dedx, 4);
memcpy(manuID + 8, &decx, 4);
return manuID;
}
std::string getCpuType()
{
const DWORD id = 0x80000002;
char cpuType[49];
memset(cpuType, 0, sizeof(cpuType));
for (DWORD t = 0; t < 3; t++){
initCpu(id + t);
memcpy(cpuType + 16 * t + 0, &deax, 4);
memcpy(cpuType + 16 * t + 4, &debx, 4);
memcpy(cpuType + 16 * t + 8, &decx, 4);
memcpy(cpuType + 16 * t + 12, &dedx, 4);
}
return cpuType;
}
void getCpuInfo(){
std::cout << "CPU主频: " << getCpuFreq() << "MHz" << std::endl;
std::cout << "CPU厂商: " << getManufactureID() << std::endl;
std::cout << "CPU类型: " << getCpuType() << std::endl;
}
void main(){
getCpuInfo();
system("pause");
return;
}

本文介绍了一段使用C++编写的代码,该代码能够获取计算机CPU的主要信息,包括CPU主频、CPU厂商和CPU类型等。通过利用汇编指令和Windows API,程序实现了对这些信息的有效读取。
8378

被折叠的 条评论
为什么被折叠?



