cpuid 명령어를 사용하여 Linux에서 CPU 정보에 액세스
이 질문에서 개발자는 다음을 사용하여 Linux 환경에서 CPU 정보에 액세스하려고 합니다. Windows API의 _cpuinfo() 함수와 유사한 메서드입니다. 제공된 코드는 어셈블리 지침(cpuid)을 활용하여 이 정보를 검색하려고 시도하지만 개발자는 수동 어셈블리가 필요하지 않기를 원합니다.
해결책은 코드를 컴파일할 때 사용할 수 있는 cpuid.h 헤더 파일을 활용하는 것입니다. GCC. 이 헤더는 두 가지 함수를 선언합니다:
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);
__get_cpuid_max 함수는 cpuid 명령어에 대해 지원되는 가장 높은 입력 값을 반환합니다. __ext를 기본 정보의 경우 0x0, 확장 정보의 경우 0x8000000으로 지정할 수 있습니다.
__get_cpuid 함수는 지정된 수준에 대한 CPU 정보를 검색하고 eax, ebx, ecx 및 edx 레지스터의 데이터를 반환합니다. 성공하면 0이 아닌 값을 반환하고 요청된 수준이 지원되지 않으면 0을 반환합니다.
사용 예:
#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
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3