2012-04-16 4 views
4

asmキーワードを使用するだけで、アセンブラを文字通りC++にドロップすることができるC++の本を読んでください。 1は、アセンブラを書くためのVisual Studioを使用したい場合は、この平均値は、私は単純にC++ mainメソッドをアセンブラIDEの代わりにVisual C++環境と "Asm"キーワードを使用しますか?

を作成することができないし、そのにアセンブラをドロップすると、C++プログラムとして、それを実行しますか?コンパイラは、単にアセンブラプログラムであるかのように、単にアセンブラ組み込みC++を実行しますか?

私の質問は、アセンブラのためのまともなIDEの欠如に由来しています。あなたがC++コンパイラを使用する場合

+0

http://msdn.microsoft.com/en-us/library/45yd4tzz%28v=VS.80%29.aspx –

+0

[OK]をスワップ "asm"私の質問で "__asm"。 – user997112

答えて

4

することは、それがint main()ではありません、あなたのプログラムに余分なコードを追加します。あなたは、単純なハローワールドプログラムをコンパイルした場合、あなたはそれが、このような_set_app_type_getmainargsなど、いくつかの関数を呼び出す、int main()前にはるかに実行を開始気づくでしょうし、その後、最終的にはあなたのint main()を呼び出します。あなたにとって最も興味深いのは、おそらく_getmainargsへの呼び出しでしょう。プログラムのコマンドライン引数を取得します。 NASM、FASM、GASなどのアセンブラでアセンブラをコンパイルする場合は、_getmainargsなどを呼び出さないので、プログラマは独自の方法を実装してコマンドライン引数を取得する必要があります。初心者。

限り、あなたはvolatileキーワードであなたの__asmを指定すると、コンパイラは、あなたのアセンブリコードをいじくり回すべきではないと、それは「 アセンブラプログラム」だったかのように(つまり、特定のコード)を実行します。

アセンブリ用のIDEをお探しの場合は、同じパスを使用していることがわかります。私はFASMを使っていますが、これはすばらしいIDEですが、EclipseとVisual Studioのプラグインがありますが、私は彼らに良い経験をしているとは言えません。

編集:私はあなたがアセンブリを学習している場合、あなたはおそらく、アセンブラでそれを学んでオフに優れていることを追加したいと思います。アセンブリの一般的な使用方法は、C++以上の言語が使用できない場合に使用されるため、C++コンパイラとインラインアセンブリ構文に依存するようになると、アセンブリの作成時に混乱を招く可能性があります。

+0

コンパイラはasmコードで修正しますか? – Mikhail

+1

@Misha 'volatile'キーワードを使用した場合、それはすべきではありません。このキーワードは、「このままにする」という意味です。いくつかのコンパイラでは、 '-force-volatile'などのコンパイラフラグを指定する必要があるかもしれません。そうすれば、コンパイラをチェックしたいかもしれません。 – user99545

+0

誰かがFASM、NASM、MASMの違いを説明できますか? 1つのIntel、もう1つのAMD ...などですか? – mezamorphic

関連する問題