我试图得到一个打印出CPU名称/供应商的函数,但是当我尝试时,最终却得到了“ GenuntellineI”。

这是函数:

void PrintProcessingDeviceType()
{
    uint32_t regs[4];

    #ifdef _WIN32
    __cpuid((int*)regs, 0);
    #else
    asm volatile ("cpuid" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3]) : "a" (0), "c" (0));
    #endif

    std::cout << std::string((const char*)&regs, 16) << std::endl;
}


这两个路径(定义了_WIN32以及未定义_WIN32)都导致发生此错误。这是CPUID的问题吗?我做错了什么吗?

最佳答案

您为什么会期望有所不同?
当说明的行为似乎与您期望的有所不同时,请查阅《英特尔手册》。

09-07 03:16