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; }
|