MASM x64 (ml64.exe)
ml64.exe 是組譯工具可接受x64組合語言。 Ml64.exe 編譯器選項的相關資訊,請參閱毫升和 ML64 命令列參照。
不支援內嵌 ASM x64。 使用 MASM 或編譯器內建函式 (x 64 的內建函式)。
兩種解決方法是使用 MASM (它完全支援 x64) 和編譯器內建的另一個組件。 新增了許多內建函式,以便讓客戶使用的函式的特殊指令 (例如: 有權限,位元掃描/測試,連鎖欸)在以跨平台的方式儘可能靠近。
ml64 的特定指示詞
使用 ml64.exe 中的下列指示詞:
此外, 程序指示詞已經過更新,所使用的 ml64.exe。
32 位元位址模式 (位址大小覆寫)
如果記憶體運算元包含 32 位元暫存器,MASM 將發出的 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]