2014-11-28 13 views
2

해결책을 찾고 있는데, aes-ni을 CPU에서 확인할 수 있습니다. 응용 프로그램에이 정보를 넣어야하므로 CPU-Z, bash 명령 등을 찾지 않습니다. 나는 그것이 aes 깃발 인 것을 나는 알고있다. 어셈블리 나 c에서 어떻게 체크 할 수 있는지 전혀 모르겠습니다. 주요 응용 프로그램은 C#으로 작성되었지만 중요하지 않습니다.aes-ni를 확인하는 방법은 CPU에서 지원됩니까?

+0

관련 : http://unix.stackexchange.com/questions/14077/how-to-check-that-aes-ni-is-supported-by-my-cpu . 리눅스에서'/ proc/cpuinfo'는 C에서 bash와 같이 사용 가능하지만 유닉스 시스템이 필요합니다. –

답변

3

이 정보는 cpuid 명령에 의해 반환됩니다. eax=1을 입력하고 ecx의 비트 # 25를 입력하면 지원이 표시됩니다. 자세한 내용은 인텔 지침 세트 참조를 참조하십시오. 샘플 코드 :

mov eax, 1 
cpuid 
test ecx, 1<<25 
jz no_aesni 

또한 실행하고 예외를 잡을 수도 있습니다. 비쥬얼 C++에서

+0

고맙습니다. 나는 그렇게 만들었습니다. – s3ven

1

static bool GetNNICapability() 
{ 
    unsigned int b; 

    __asm 
    { 
     mov  eax, 1 
     cpuid 
     mov  b, ecx 
    } 

    return (b & (1 << 25)) != 0; 
}