5

gcc コンパイラーを使用して Code::Blocks で古い C++ ソフトウェア プロジェクトをコンパイルしようとしています。他のいくつかの問題を修正した後、壁にぶつかりました。プロジェクトには、次のように記述された Intel スタイルのインライン ASM を含むファイルがあります。

_asm {
  code here
}

コンパイラは、「エラー: '_asm' はこのスコープで宣言されていません」でコンパイルを拒否します。

私は解決策を探してグーグルでしばらく過ごしましたが、私が見つけることができる唯一のものは-masm=intel、ビルドオプションに追加すること(私が試してうまくいかない)、またはコードを変換することですasm ("code here");(これはそうではありません) ASM の量が膨大なため、実現不可能です)。gccでこのコードをそのままコンパイルする方法を知っている人はいますか、それともあきらめて別のコンパイラを使用する必要がありますか?

4

2 に答える 2

2

GCCはインラインアセンブラに非常に異なる構文を使用するため、些細な変更でそれを処理することはできません。次のオプションが表示されます。

  1. すべてをGCC構文またはCコードで書き直します
  2. GCC構文に変換するスクリプトを作成します(重要なタスク)
  3. コードを作成されたコンパイラー(MSVC?)でコードをコンパイルします。
于 2012-06-28T11:26:56.997 に答える
0

gcc でコードを「そのまま」コンパイルすることはできません。gcc を使用してこれをコンパイルする必要がある場合は、C++ または gcc 互換の asm でコードを書き直す必要があります。アセンブリ コードが本当に多い場合 (たとえば 200 命令以上) は、gcc アセンブラ構文を学習する価値があるかもしれません。そうでない場合は、C++ でコーディングします。

于 2012-06-28T14:13:38.657 に答える