建議使用 Visual Studio 2017

MASM for x64 (ml64.exe)

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

ml64.exe 是組譯工具可接受x64組合語言。 Ml64.exe 編譯器選項的相關資訊,請參閱ML and ML64 Command-Line Reference

不支援內嵌 ASM x64。 使用 MASM 或編譯器內建函式 (x64 Intrinsics)。

兩種解決方法是使用 MASM (它完全支援 x64) 和編譯器內建的另一個組件。 新增了許多內建函式,以便讓客戶使用的函式的特殊指令 (例如: 有權限,位元掃描/測試,連鎖欸)在以跨平台的方式儘可能靠近。

使用 ml64.exe 中的下列指示詞:

此外, PROC指示詞已經過更新,所使用的 ml64.exe。

如果記憶體運算元包含 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]  

Microsoft Macro Assembler Reference

顯示: