2

インテルのリファレンス マニュアルによると、次の場合、命令は #UD 例外をスローします。CPUID.(EAX=14H, ECX=0):EBX.PTWRITE [Bit 4] = 0

これらの値を確認するにはどうすればよいですか?

int __get_cpuid (unsigned int __level, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx)from <cpuid.h>thenを使用する場合、引数は何にする必要がありますか?

4

1 に答える 1

5

あなたはそれを使用することはできません。ecxそれはゼロでなければならないので、あなたも渡すことができるバージョンが必要です。利用__cpuid_count可能な場合は、次のように使用できます。

unsigned eax, ebx, ecx, edx;
if (__get_cpuid(0x00, &eax, &ebx, &ecx, &edx) == 0) {
    // cpuid not supported
}
if (eax < 0x14) {
    // leaf 0x14 not supported
}
__cpuid_count(0x14, 0x00, eax, ebx, ecx, edx);
if ((ebx & 0x10) == 0) {
    // PTWRITE not supported
}
于 2016-11-22T01:39:52.867 に答える