Acceder a la información de la CPU en Linux usando la instrucción cpuid
En esta pregunta, un desarrollador busca acceder a la información de la CPU en un entorno Linux usando un método similar a la función _cpuinfo() en la API de Windows. El código proporcionado intenta utilizar instrucciones de ensamblaje (cpuid) para recuperar esta información, pero el desarrollador desea evitar la necesidad de ensamblaje manual.
La solución radica en utilizar el archivo de encabezado cpuid.h disponible al compilar el código con CCG. Este encabezado declara dos funciones:
unsigned int __get_cpuid_max(unsigned int __ext, unsigned int *__sig);
int __get_cpuid(unsigned int __level, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx);
La función __get_cpuid_max devuelve el valor de entrada más alto admitido para la instrucción cpuid. Puede especificar __ext como 0x0 para información básica o 0x8000000 para información extendida.
La función __get_cpuid recupera información de la CPU para un nivel específico y devuelve los datos en los registros eax, ebx, ecx y edx. Devuelve un valor distinto de cero si se realiza correctamente y cero si el nivel solicitado no es compatible.
Ejemplo de uso:
#include
#include
int main() {
unsigned int eax, ebx, ecx, edx;
// Get maximum supported CPUID level
unsigned int max_level = __get_cpuid_max(0x0, NULL);
// Iterate over different CPUID levels
for (unsigned int level = 0; level
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3