1
this c source file(Visual Studioから)のcl.exeを使ってコンパイルしようとしています。コンパイルに失敗し、問題の特定のコードです:私はこの失敗見ている'asm'指示文でcソースをコンパイル
#include <stdio.h>
static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
unsigned int *ecx, unsigned int *edx)
{
/* ecx is often an input as well as an output. */
asm volatile("cpuid"
: "=a" (*eax),
"=b" (*ebx),
"=c" (*ecx),
"=d" (*edx)
: "0" (*eax), "2" (*ecx));
}
:代わりに直接アセンブリの
C:\>cl sgx.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24213.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
sgx.c
sgx.c(7): error C2065: 'asm': undeclared identifier
sgx.c(7): error C2143: syntax error: missing ';' before 'volatile'
gcc拡張インラインasmのように見えます。私はVSがそれを理解できるとは思わない。別のコンパイラを使用してください。 – EOF
あなたは 'asm'の代わりに' __asm'を試しましたか? –
MSVCと互換性のないGCCの拡張インラインアセンブラのようです。 MSVCにはコンパイラ組み込みの '__cpuid'があり、https://msdn.microsoft.com/en-us/library/hskdteyh.aspxに文書化されています。あなたの 'cpuid'関数をインラインアセンブラの代わりに組み込み関数を使うように変換します。 –