Red de conocimiento informático - Computadora portátil - Programación en lenguaje C para obtener información de la CPU.

Programación en lenguaje C para obtener información de la CPU.

Ten paciencia y echa un vistazo. ¡Espero que te sea de ayuda!

#includelt; stdio.hgt;

int sin signo vex;

int sin signo vebx; >

unsigned int vecx;

//Ejecutar instrucción CPUID

void cpuid(unsigned int veax1)

{

_asm {

mov eax, veax1

cpuid

mov veax, eax

mov vebx, ebx

mov vecx, ecx

mov vedx, edx

}

}

//Realice una operación de cambio para cambiar el código ASCII en el registro, salida en forma de caracteres

void LeftMove(unsigned int var)

{

printf("c", var);

for(int i=0;ilt;3;i)

{

var=(vargt;gt;;

printf("c", var );

}

}

//Realizar una operación de cambio y generar el valor en el registro en forma de "d"

void LM(unsigned int var)

{

printf("d", var);

for(int i=0; ilt; 3; i )

{

var=(vargt; gt;;

printf("d", var);

}

}

// Obtenga el fabricante de la CPU (cuando el valor EAX es 0) y guárdelo en EBX, EDX y ECX en secuencia

void getCpuName()

{

cpuid(0);

MovimientoIzquierdo(vebx);

MovimientoIzquierdo(vedx);

MovimientoIzquierdo(vecx);

printf("\

";

}

//Obtener la marca registrada de la CPU, cuando EAX Cuando los valores son 0x80000003 y 0x80000004, se devuelven 16 caracteres respectivamente para formar una marca registrada

//Almacenado en EAX, EBX, ECX, EDX en secuencia

void getCpuBrand()

{

for(int j=0;jlt;2;j)

{

cpuid(0x80000003 j);

MovimientoIzquierdo(veax);

MovimientoIzquierdo(vebx);

MovimientoIzquierdo(vecx); MovimientoIzquierdo(vedx);

}

printf("\

";

}

// Obtener C

Características de la PU, el parámetro es eax = 1, el valor de retorno se coloca en edx y ecx, verificando un determinado bit de edx o ecx,

//Se puede obtener si una característica de la CPU es compatible. Por ejemplo, el bit 32 de edx representa si admite MMX,

//el bit 28 de edx representa si admite Hyper-Threading y el bit 7 de ecx representa si admite velocidad sted.

void getCpuFeature()

{// Debido a que hay demasiadas funciones, es imposible escribirlas una por una. Escríbalas nuevamente cuando sea necesario.

}

// Obtenga el número de serie de la CPU. Para obtener el número de serie, primero use eax = 1 como parámetro. almacenado en el eax devuelto.

//Utilice eax = 3 como parámetro, devuelva ecx y edx para almacenar las primeras 4 PALABRAS en orden de menor a mayor.

void getCpuSeris()

{

cpuid(1);

LM(veax); cpuid(3);

LM(vecx);

LM(vedx);

printf("\

";

}

void main()

{

getCpuName()

getCpuBrand(); p>

p>

getCpuSeris();

}