x64 用 MASM (ml64.exe)
ml64.exe は x64 のアセンブリ言語を受け入れるアセンブラーです。ml64.exe コンパイラ オプションの詳細についてはML および ML64 のコマンド ライン リファレンス を参照してください。
インライン中心は x64 ではサポートされません。MASM またはコンパイラ組み込み関数 x64 組み込み() を使用します。
2 個の代替手段があります (x64 を完全にサポートします) のアセンブリ MASM コンパイラ組み込み関数です。ここでは顧客にとって関数の命令を利用するための組み込みを追加します (たとえば。特権のビットかみ合う走査テストなど) または… クロス プラットフォームにできるだけ近い使用方法。
ml64 固有のディレクティブ
ml64.exe の次のディレクティブの使用 :
またPROC のディレクティブは ml64.exe で使用するために更新されました。
32 ビット アドレス モード (アドレスのサイズの優先)
MASM はメモリ オペランドは 32 ビットのレジスタが含まれる場合 0x67 アドレスのサイズのオーバーライドを生成します。たとえば次の例はアドレスのサイズのオーバーライドを生成します :
mov rax, QWORD PTR [ecx]
mov eax, DWORD PTR [ecx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10d+0100h]
prefetch [eax]
movnti rax, QWORD PTR [r8d]
MASM は 32 ビット位置がメモリ オペランドとして単独では64 ビット アドレスに意図していることを前提としています。現在このようなオペランドと 32 ビットのアドレスのサポートはありません。
最後にメモリ オペランド内の複合登録のサイズは次のコードに示すようにエラーが発生します。
mov eax, DWORD PTR [rcx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10+0100h]