MASM für x64 (ml64.exe)
Der Assembler wird der ml64.exe Assemblersprache, der x64 akzeptiert.Weitere Informationen über ml64.exe-Compileroptionen finden Sie unter ML und Verweis der Befehlszeilen-ML64.
Inline ASM wird nicht für x64unterstützt.Verwenden Sie MASM oder systeminterne Funktionen des Compilers (x64 Intrinsics).
Die beiden Problemumgehungen sind separate Assembly mit MASM (x64) und vollständig unterstützt systeminterne Funktionen des Compilers verfügbar.Wir haben viele systeminterne Funktionen hinzugefügt, um Kunden zu ermöglichen, Insbesondere FUNCTION-Anweisungen zu verwenden (z. B.privilegierte, der Überprüfung/Test, ineinandergegriffen Bit, ETC…) in plattformübergreifendem eine Weise zu schließen.
ml64-Specific Direktive
Verwenden Sie die folgenden Direktiven mit ml64.exe:
Außerdem wurden die PROC-Direktive zur Verwendung mit ml64.exe aktualisiert.
32-Bit-Adressiermethode (Adressen-Größen-Überschreibung)
MASM gibt die Adresse der Überschreibung der Größe 0x67 aus, wenn ein Speicher operand 32-Bit-Register enthält.Die folgenden Beispiele führen beispielsweise die Adressen Überschreibung Haupt- ausgegeben werden:
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 wird davon ausgegangen, dass beim Ausführen einer 32-Bit-Verschiebung alleine des Speichers operand angezeigt wird, das 64-Bit-Adressieren vorgesehen ist.Es gibt derzeit keine Unterstützung für 32-Bit adressierend mit solchen Operanden.
Schließlich generiert das Kombinieren von Registern Haupt- in einem Speicher operanden, wie im folgenden Code dargestellt, einen Fehler.
mov eax, DWORD PTR [rcx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10+0100h]