Accès aux informations sur le processeur sous Linux à l'aide de l'instruction cpuid
Dans cette question, un développeur cherche à accéder aux informations sur le processeur dans un environnement Linux à l'aide d'un méthode semblable à la fonction _cpuinfo() de l’API Windows. Le code fourni tente d'utiliser les instructions d'assemblage (cpuid) pour récupérer ces informations, mais le développeur souhaite éviter d'avoir recours à un assemblage manuel.
La solution réside dans l'utilisation du fichier d'en-tête cpuid.h disponible lors de la compilation du code avec CCG. Cet en-tête déclare deux fonctions :
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 fonction __get_cpuid_max renvoie la valeur d'entrée prise en charge la plus élevée pour l'instruction cpuid. Vous pouvez spécifier __ext comme 0x0 pour les informations de base ou 0x8000000 pour les informations étendues.
La fonction __get_cpuid récupère les informations CPU pour un niveau spécifié et renvoie les données dans les registres eax, ebx, ecx et edx. Il renvoie une valeur différente de zéro en cas de succès et zéro si le niveau demandé n'est pas pris en charge.
Exemple d'utilisation :
#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
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3