문제

프로그램 중에 시스템/프로세서 아키텍처를 감지 할 수 있습니까? ~이다 C ++에서 실행 (Windows 및 Linux에서)?

도움이 되었습니까?

해결책

Windows에서 사용할 수 있습니다 __cpuid. Linux에서는 가능합니다 open("/proc/cpuinfo") 그리고 그것을 살펴보십시오.

다음은 Windows의 예제입니다. MSDN 페이지:

#include <intrin.h>

bool cpuSupports64()
{
    int CPUInfo[4];
    __cpuid(CPUInfo, 0);
    return (CPUInfo[3] & 0x20000000) || false;
}

다른 팁

Linux에서는 사용할 수 있습니다 uname 시스템 호출. 이 사용자가 할당 된 구조물을 채 웁니다.

  struct utsname {
           char sysname[];    /* Operating system name (e.g., "Linux") */
           char nodename[];   /* Name within "some implementation-defined
                                 network" */
           char release[];    /* OS release (e.g., "2.6.28") */
           char version[];    /* OS version */
           char machine[];    /* Hardware identifier */
       #ifdef _GNU_SOURCE
           char domainname[]; /* NIS or YP domain name */
       #endif
       };

그만큼 machine 필드는 아키텍처를 식별합니다.

이 정보로 무엇을하려고하는지에 따라 (예 : 특정 CPU에 대한 가장 빠른 수작업 조립 코드를 선택하십시오) Linux에서는 특히 "플래그"섹션을 읽으려면 /proc /cpuinfo를 읽으려면 SSE 중에서 선택할 수 있습니다. /SSE2 구현 대 MMX 구현 대 그 밖의.

Big Endian System vs. Little Endian 시스템은 조금 더 복잡합니다. http://en.wikipedia.org/wiki/endianess

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top