x64 (ml64.exe) MASM
ml64.exe 是接受 x64 汇编语言的汇编。 有关 ml64.exe 编译器选项的信息,请参见 语言和ML64 Command-line引用。
内联 ASM 没有为 x64支持。 使用 MASM 或编译器内部函数 (x64 内部)。
两个工作区是具有单独的程序集完全支持 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]