人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

次の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;
}

●質問者: hatabou6
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Sampo
●200ポイント ベストアンサー

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

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

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


hatabou6さんのコメント
回答ありがとうございます。 もし、可能ならば、VC用に書き換えたもの教えていただけませんか?

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

hatabou6さんのコメント
Sampoさん ありがとうございます。 改めて質問をしてみます。 ご回答ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ