Red de Respuestas Legales - Derecho empresarial - Programación en lenguaje C para obtener información de la CPU.

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

Echa un vistazo con paciencia, la cirugía ha terminado, ¡espero que te ayude!

# include & ltstdio.h & gt

Int veax sin signo

Int vebx sin signo

Int vedx sin signo

Unsigned int vecx

//Ejecutar instrucción CPUID

void cpuid (entero sin signo veax1)

{

_asm{

mov eax, veax1

cpuid

mov veax, eax

mov vebx, ebx

mov vecx, ecx

mov vedx, edx

}

}

//Cambia el código ASCII en el registro, Salida en forma de caracteres.

void LeftMove (variable entera sin signo)

{

printf("%c ", var);

for( int I = 0;i<3;i++)

{

var = (var >>

printf("%c ", var);

}

}

//Realice una operación de cambio y genere el valor en el registro como "%d"

<>void LM (unsigned. variable entera)

{

printf("%d ", var);

for(int I = 0; i<3;i++)

{

var = (var >>

printf("%d ",var);

p>

}

}

//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);

movimiento a la izquierda (vebx);

movimiento a la izquierda (vedx); p>movimiento izquierdo(vecx);

printf("\

";

}

// Obtener la marca registrada del CPU Cuando los valores en EAX son 0x80000003 y 0x80000004, se devuelven 16 caracteres para formar la marca registrada

//Almacenada en EAX, EBX, ECX y EDX >void getCpuBrand()

{

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

{

cpuid( 0x 80000003+j);

movimiento a la izquierda(veax);

movimiento a la izquierda(vebx);

movimiento a la izquierda(vecx);

movimiento a la izquierda(vedx);

}

printf("\

";

}

//Obtener las características del CPU, el parámetro es eax = 1 y el valor de retorno se coloca en edx y ecx. Después de verificar un edx o ecx,

//Puedes saber si se admite una determinada característica de la CPU. Por ejemplo, el bit 32 de edx indica si se admite MMX

// El bit 28 de edx indica si se admite hyper-threading y el bit 7 de ecx indica si se admite la velocidad sted.

void getCpuFeature()

{//Debido a que hay demasiadas funciones, no podemos escribirlas una por una. Escríbalo cuando sea necesario. El método es el mismo.

}

//Obtener el número de serie de la CPU requiere dos pasos. Primero, se usa eax = 1 como parámetro y el eax devuelto almacena las dos palabras superiores del número de secuencia.

//Con eax = 3 como parámetro, devuelve ecx y edx, y almacena las primeras cuatro palabras de menor a mayor.

void getCpuSeris()

{

cpuid(1);

LM(veax);

cpuid(3);

LM(vecx);

LM(vedx);

printf("\

";

}

void main()

{

getCpuName();

getCpuBrand();

p>

getCpuSeris();

}