MASM for x64 (ml64.exe)

ml64.exe 是接受 x64 汇编语言的汇编。 有关 ml64.exe 编译器选项的信息,请参见 ML 和 ML64 命令行参考

内联 ASM 没有为 x64支持。 使用 MASM 或编译器内部函数 (x64 Intrinsics)。

两个工作区是具有单独的程序集完全支持 x64) 的 MASM (和编译器内部函数。 我们添加大量内部允许客户利用特殊功能命令 (即。 特权,扫描位/测试,互锁,等等) 尽可能接近跨平台的方式尽可能。

ml64 特定指令

使用 ml64.exe 的以下指令:

此外, PROC 指令是更新用于 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]

请参见

其他资源

Microsoft 宏汇编程序参考