Acessando informações da CPU no Linux usando a instrução cpuid
Nesta questão, um desenvolvedor busca acessar informações da CPU em um ambiente Linux usando um método semelhante à função _cpuinfo() na API do Windows. O código fornecido tenta utilizar instruções de montagem (cpuid) para recuperar essas informações, mas o desenvolvedor deseja evitar a necessidade de montagem manual.
A solução está na utilização do arquivo de cabeçalho cpuid.h disponível ao compilar o código com CCG. Este cabeçalho declara duas funções:
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);
A função __get_cpuid_max retorna o valor de entrada mais alto suportado para a instrução cpuid. Você pode especificar __ext como 0x0 para informações básicas ou 0x8000000 para informações estendidas.
A função __get_cpuid recupera informações da CPU para um nível especificado e retorna os dados nos registros eax, ebx, ecx e edx. Ele retorna um valor diferente de zero se for bem-sucedido e zero se o nível solicitado não for compatível.
Exemplo 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
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3