次のc言語コードを

visual studio express 2010でコンパイルしようとすると、
mov %%eax,%0;":"=r"(foo),"=r"(cf_error_status)::"%eax","%edx");
の最初のコロンに関して
「IntelliSense: ')' が必要です」とエラーが出てしまいます。
よい対処法はないでしょうか?

ちなみに、MinGWを使ってgccでコンパイルするとエラーなく、実行もできます。

int _rdrand32_step(unsigned int *therand)
{
int foo;
int cf_error_status;
asm("\n\
rdrand %%eax;\n\
mov $1,%%edx;\n\
cmovae %%eax,%%edx;\n\
mov %%edx,%1;\n\
mov %%eax,%0;":"=r"(foo),"=r"(cf_error_status)::"%eax","%edx");
*therand = foo;
return cf_error_status;
}

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/06/05 21:11:00
  • 終了:2013/06/05 23:05:35

ベストアンサー

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042013/06/05 22:38:25

ポイント200pt

それはコロンが問題ではなくその前の引用符がバックスラッシュでエスケープされていないから出ているエラーです。

で、それを直してもやはりコンパイルは通らないはず。
インラインアセンブラのその書き方はgcc独自のもので、VCではまた別に__asmキーワードを使った書き方をします。
http://codezine.jp/article/detail/393

インラインアセンブラを使ってコンパイラ過般なプログラムを書くのは無理とお考えください。

他1件のコメントを見る
id:Sampo

残念ながらVCのインラインアセンブラはちょこっと修正したことがある程度なのでそこまではお答えできません。 __asm というキーワードで検索すれば情報は豊富なので、がんばってみてください。

2013/06/05 23:05:27
id:hatabou6

Sampoさん

ありがとうございます。
改めて質問をしてみます。
ご回答ありがとうございました。

2013/06/05 23:07:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません