Visual Studio 2008 を使用した MASM 6.11 アセンブリ コードのアセンブル、リンク、デバッグ、および実行

StackOverflow https://stackoverflow.com/questions/112412

質問

これらすべてのビルド プロセスが MASM 6.11 で提供されるツールによって実行されているかのように、コードのコンパイル、リンク、ビルドなどを効果的に行いながら、可能な限り Visual Studio 2008 を使用したいと考えています。MASM の正確なバージョンは、6.x の範囲内であれば問題ありません。これは、私の大学が 16 ビット アセンブリを教えるために使用しているものだからです。

この件に関していくつかの調査を行った結果、いくつかの選択肢があるという結論に達しました。

  1. MASM 6.11 がネイティブで行うのと同じフラグなどを使用して MASM 6.11 実行可能ファイルを呼び出すように VS を再構成します。
  2. VS によって呼び出される中間バッチ ファイルを作成し、MASM のリンカーなどの適切なコマンドを呼び出します。
  3. VS の組み込みビルド ツール/ルール (アセンブラー、リンカーなど) を再構成して、MASM 6.11 で使用されるものと同じ環境を提供します。

オプション (2) は、VS の「外部ツール」インターフェイスで利用可能なオプションでは MASM のビルド ツールを正しく呼び出すには不十分である可能性があることに気づいたときに提起されました。そのため、引数を渡す VS の厳密な方法を解釈するためのバッチ ファイルが役立つ可能性があります。これを機能させる方法についての学習には、コマンド プロンプトから ML.exe、LINK.exe などを手動で呼び出すことが含まれていました。

以下に、私の質問に答えるのに役立つリンクをいくつか示します。私はそれらをすべて読みましたが、どれも実際の解決策ではないことに注意してください。私が MASM 6.11 を指定したことで、おそらくより一般化された回答を誰かが提供できなくなることがないことを祈るばかりです。

オプション (2) と同様の方法が使用されますが、スレッド上のユーザーに連絡できません。
http://www.codeguru.com/forum/archive/index.php/t-284051.html
(また、中間バッチファイルの必要性については疑問があります)

私の質問に対する説明が古くなっています:
http://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

おそらく私が最終的な解決策に最も近いものですが、MASM以外のツールスイートを指し、バッチファイルも使用します。
http://www.kipirvine.com/asm/gettingStarted/index.htm#16-bit

コード -> 実行プロセスの各ステップで使用されるツールの用語が間違っていたら申し訳ありませんが、コードの作成が完了してから実行可能ファイルを生成するまでのステップ全体を再現しようとしているため、それはとても重要なことだと思う。

役に立ちましたか?

解決

MASM ルール ファイルは次の場所にあります (32 ビット システムの削除) (x86)):

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

そのファイルをプロジェクト ディレクトリにコピーし、プロジェクトのカスタム ビルド ルールに追加します。次に、「ルール ファイルの変更...」で MASM ビルド ルールを選択し、「ビルド ルールの変更...」を選択します。

プロパティを追加します。

  • ユーザープロパティのタイプ:
  • デフォルト値: *.inc
  • 説明: MASM ファイルの依存関係を追加します。
  • 表示名: 追加の依存関係
  • 読み取り専用です: 間違い
  • 名前: 追加の依存関係
  • プロパティページ名: 一般的な
  • スイッチ: [価値]

「追加の依存関係」の値を次のように設定します。 [追加の依存関係]. 。ビルドは自動的に変更を検出するはずです。 *.inc, 、個々の asm ファイルのプロパティを編集して他のファイルを指定することもできます。

他のヒント

メイクファイルプロジェクトを作成できます。Visual Studio の [ファイル] / [新規作成] / [プロジェクト] で、 [Visual C++] / [Makefile プロジェクト] を選択します。

これにより、任意のコマンドを実行してプロジェクトをビルドできるようになります。C/C++である必要はありません。従来の NMake メイクファイルである必要さえありません。私はこれを使用して、バッチ ファイルと NAnt スクリプトを使用してドライバーをコンパイルしました。

MASM 6.x ツールチェーンを実行できるようにするのはかなり簡単です。

ファイル拡張子に応じてカスタム ビルド ルールを定義することをお勧めします。(Visual Studio 2008 は、少なくとも Professinal Edition では、配布可能な .rules ファイルを生成できます)。そこでは、asm ファイルのカスタム ビルド ツールを定義できます。このアプローチを使用すると、リンカー ステップをそのままにしておくことができるはずです。

昔はMASM32を使っていました リンクテキスト 学生のアセンブリ学習を支援する IDE として。バッチファイルでアセンブルとリンクがどのように行われるかを確認できます。

バッチ ファイルの代わりに、ファイル上で定義されたカスタム ビルド ステップを使用してみてはいかがでしょうか?

Visual Studio を使用する場合、空のインライン アセンブリ ブロックを持つ関数を呼び出すコンソール アプリのエントリ ポイントを備えた C/C++ のスケルトン プロジェクトを提供し、そこに結果を入力させることはできないでしょうか。

Irvine のガイドを使用してみてはいかがでしょうか?Irvine のライブラリは優れており、必要に応じて、それを無視して Windows プロシージャを直接操作することもできます。このようなガイドを探していましたが、Irvine のガイドが最良の解決策でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top