7

ターゲット アーキテクチャが I386 または AMD64 であるかどうかを ASM ソース ファイルからコンパイル時に検出するにはどうすればよいですか?

masm(ml.exe)/masm64(ml64.exe) を使用して file32.asm と file64.asm をアセンブルしています。アーキテクチャに応じて、file32.asm または file64.asm のいずれかを含む単一のファイル file.asm を作成すると便利です。理想的には、次のようなものを書きたいと思います。

IFDEF amd64
file64.asm を含める
そうしないと
file32.asm を含める
ENDIF

また、必要に応じて、ml.exe と ml64.exe を別のコマンド ライン オプションで実行できます。

ありがとう!

4

3 に答える 3

12
IFDEF RAX

  ECHO "WIN64"

ELSE

  ECHO "WIN32"

ENDIF
于 2012-02-06T03:59:43.763 に答える
6

私があなたを正しく理解しているなら、あなたは32ビットと64ビットのMASMバージョン間で異なる値を持つある種の組み込み定義を探しています。私はかつてそのようなものを探しましたが、適切なものは見つかりませんでした。

ただし、AMD64 equ 1ソースファイルの先頭で目的のコードパスを選択したり、ML / ML64コマンドラインでなど、独自のコードを定義するのは簡単/DAMD64です。そして、あなたが提案するように、IFDEF/を使用します。IFNDEF

于 2010-04-08T07:03:56.077 に答える
1

x86 と x64 の命令セット (スタックの使用法と制限については言及していません) は非常に異なるので、とにかく、それが理にかなっているのだろうかと思います...IOW、アーキテクチャに依存しない効率的な x86 / x64 コードを書くことは、私にはほとんど不可能に見えます。これはアセンブリであり、ポータブル HLL ではありません。

これが、追加のディレクティブを使用してすべてを処理する 1 つの ml.exe ではなく、2 つの特定のアセンブラー、ml.exe と ml64.exe が存在する理由でもあります。

于 2010-04-08T07:54:11.070 に答える