當前位置:律師網大全 - 商標註冊 - c語言編程獲取cpu信息

c語言編程獲取cpu信息

耐心看壹下,手術已經過去了,希望對妳有幫助!

# include & ltstdio.h & gt

無符號int veax

無符號int vebx

無符號int vedx

無符號int vecx

//執行CPUID指令

void cpuid(無符號整數veax1)

{

_asm{

mov eax,veax1

cpuid

mov veax,eax

mov vebx,ebx

mov vecx,ecx

mov vedx,edx

}

}

//將寄存器中的ASCII碼移位,以字符形式輸出。

void LeftMove(無符號整型變量)

{

printf("%c ",var);

for(int I = 0;我& lt3;i++)

{

var =(var & gt;& gt;

printf("%c ",var);

}

}

//進行移位操作,將寄存器中的值作為“%d”輸出。

void LM(無符號整型變量)

{

printf("%d ",var);

for(int I = 0;我& lt3;i++)

{

var =(var & gt;& gt;

printf("%d ",var);

}

}

//獲取CPU廠商(EAX值為0時),依次存放在EBX、EDX、ECX。

void getCpuName()

{

cpuid(0);

left move(vebx);

left move(vedx);

left move(vecx);

printf("\

";

}

//得到CPU的商標。當EAX中的值為0x80000003和0x80000004時,分別返回16個字符組成商標。

//依次存放在EAX、EBX、ECX和EDX。

void getCpuBrand()

{

for(int j = 0;j & lt2;j++)

{

cpuid(0x 80000003+j);

left move(veax);

left move(vebx);

left move(vecx);

left move(vedx);

}

printf("\

";

}

//獲取CPU的特性,參數為eax = 1,返回值放在edx和ecx中。在驗證了壹位edx或ecx之後,

//可以得到CPU的某個特性是否被支持。例如,edx的第32位表示是否支持MMX。

//edx的第28位表示是否支持超線程,ecx的第7位表示是否支持speed sted。

void getCpuFeature()

{//因為功能太多,不能壹個壹個寫。必要的時候寫出來。方法是壹樣的。

}

//獲取CPU的序列號需要兩步。首先,eax = 1作為參數,返回的eax存儲序列號的高兩個字。

//以eax = 3為參數,返回ecx和edx,從低到高存儲前四個字。

void getCpuSeris()

{

cpuid(1);

LM(veax);

cpuid(3);

LM(vecx);

LM(vedx);

printf("\

";

}

void main()

{

getCpuName();

getCpuBrand();

getCpuSeris();

}

  • 上一篇:cnhg是什麽牌子的石膏板?
  • 下一篇:醬香型白酒常識
  • copyright 2024律師網大全