抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

C++获取CPU型号

不同CPU的指令集有所差异,尤其是在使用SIMD之类的feature时要十分注意,以MSVC获取CPU型号为例

核心是使用指令__cpuid,其实你也可以__asm {}自己写汇编

#include <iostream>
#include <string>
#include <intrin.h>
#include <array>
#include <vector>

int main() {
std::array<int, 4> regs;
std::vector<std::array<int, 4>> data;
std::string vendor_string;
__cpuid(regs.data(), 0);

for (int i = 0; i <= regs[0]; ++i)
{
__cpuidex(regs.data(), i, 0);
data.push_back(regs);
}

char vendor[0x20];
memset(vendor, 0, sizeof(vendor));
*reinterpret_cast<int*>(vendor) = data[0][1];
*reinterpret_cast<int*>(vendor + 4) = data[0][3];
*reinterpret_cast<int*>(vendor + 8) = data[0][2];
vendor_string = vendor;
if (vendor_string == "GenuineIntel")
{
std::cout << "Intel";
}
else if (vendor_string == "AuthenticAMD")
{
std::cout << "AMD";
}
return 0;
}

评论