MASM pour ml64.exe (x64)
ml64.exe est un assembly qui accepte le langage assembleur de x64 .Pour plus d'informations sur les options du compilateur de ml64.exe, consultez ML et référence de la ligne de commande ML64.
L'ASM intégré (IDE) n'est pas pris en charge pour x64.utilisation MASM ou intrinsèques du compilateur (intrinsèques x64).
Les deux solutions de contournement sont un assembly séparé avec MASM (qui prend complètement en charge x64) et intrinsèques du compilateur.Nous avons ajouté de nombreux intrinsèques pour permettre aux clients pour utiliser l'instruction offrent spéciale-fonction (par exemple.analyse privilégiée, de bits/test, verrouillées, etc.…) dans aussi près à la multiplateforme façon que possible.
directives de ml64-Specific
utilisez les directives suivantes avec ml64.exe :
En outre, la directive de COMMENT a été mise à jour pour une utilisation avec ml64.exe.
mode d'adresse 32 bits (substitution de taille d'adresse)
MASM émettra la substitution de taille de l'adresse 0x67 si un opérande de mémoire inclut les registres 32 bits.par exemple, les exemples suivants provoquent la substitution de taille d'adresse à émettre :
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 suppose que si un décalage 32 bits seul apparaît comme opérande de mémoire, le adressage 64 bits est attendu.Il n'existe actuellement pas de prise en charge l'adressage 32 bits avec ces opérandes.
Enfin, combiner les tailles de registre dans un opérande de mémoire, comme indiqué dans le code suivant, génère une erreur.
mov eax, DWORD PTR [rcx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10+0100h]