如何通过 cpuid 指令识别 c/assembler 中的 cpu 品牌名称

Posted

技术标签:

【中文标题】如何通过 cpuid 指令识别 c/assembler 中的 cpu 品牌名称【英文标题】:How to recognize cpu brand name in c/assembler by cpuid instruction [closed] 【发布时间】:2015-04-01 08:58:33 【问题描述】:

我不知道这个程序应该如何工作,我找到了一些代码但我不明白它们,如果这里有人这么好并且有这样的程序,你能解释一下吗?

#include <stdio.h>

#include <string.h>
int main()

char name[13];
 __asm

XOR EAX,EAX
CPUID
MOV dword ptr [name], EBX
MOV dword ptr [name+4], EDX
MOV dword ptr [name+8], ECX
 
name[12]=0;
printf("Procesor: %s\n", name);
getchar();
return 0;

【问题讨论】:

【参考方案1】:

cpuid 指令根据eax 寄存器的内容告诉您有关 CPU 的各种信息。当eax 包含零时,寄存器ebxedxecx 包含描述处理器供应商的字符串。您的代码从寄存器中提取字符串并将其打印出来。

阅读Wikipedia 了解更多关于cpuid 的详细信息。

【讨论】:

以上是关于如何通过 cpuid 指令识别 c/assembler 中的 cpu 品牌名称的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CPUID 指令正确获取 x86 CPU 功能? [复制]

如何通过 CPUID 命令使用 C/C++ 获取物理和虚拟地址位

如何修改KVM创建的windows的CPUID返回值

CPU和CPUID是啥关系?

x86 cpuid指令 | CPUID - CPU Identification

如何强制 VirtualBox GuestOS CPUID 匹配 HostOS?