1071d4279SBram Moolenaar" Vim syntax file 29964e468SBram Moolenaar" Language: Microsoft Macro Assembler (80x86) 39964e468SBram Moolenaar" Orig Author: Rob Brady <[email protected]> 49964e468SBram Moolenaar" Maintainer: Wu Yongwei <[email protected]> 5*47e13953SBram Moolenaar" Last Change: 2020-05-09 22:55:38 +0800 6071d4279SBram Moolenaar 74b60a6cdSBram Moolenaar" Quit when a syntax file was already loaded 84b60a6cdSBram Moolenaarif exists("b:current_syntax") 9071d4279SBram Moolenaar finish 10071d4279SBram Moolenaarendif 11071d4279SBram Moolenaar 12b8ff1fb5SBram Moolenaarlet s:cpo_save = &cpo 13b8ff1fb5SBram Moolenaarset cpo&vim 14b8ff1fb5SBram Moolenaar 15*47e13953SBram Moolenaarsyn iskeyword @,48-57,_,36,60,62,63,@-@ 162cfb4a2aSBram Moolenaar 17071d4279SBram Moolenaarsyn case ignore 18071d4279SBram Moolenaar 19071d4279SBram Moolenaar 202cfb4a2aSBram Moolenaarsyn match masmIdentifier "[@a-z_$?][@a-z0-9_$?<>]*" 219964e468SBram Moolenaarsyn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1 22071d4279SBram Moolenaar 239964e468SBram Moolenaarsyn match masmDecimal "[-+]\?\d\+[dt]\?" 249964e468SBram Moolenaarsyn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies! 259964e468SBram Moolenaarsyn match masmOctal "[-+]\?[0-7]\+[oq]" 269964e468SBram Moolenaarsyn match masmHexadecimal "[-+]\?[0-9]\x*h" 279964e468SBram Moolenaarsyn match masmFloatRaw "[-+]\?[0-9]\x*r" 289964e468SBram Moolenaarsyn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?" 29071d4279SBram Moolenaar 309964e468SBram Moolenaarsyn match masmComment ";.*" contains=@Spell 319964e468SBram Moolenaarsyn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell 329964e468SBram Moolenaarsyn region masmString start=+'+ end=+'+ oneline contains=@Spell 339964e468SBram Moolenaarsyn region masmString start=+"+ end=+"+ oneline contains=@Spell 34071d4279SBram Moolenaar 359964e468SBram Moolenaarsyn region masmTitleArea start=+\<TITLE\s+lc=5 start=+\<SUBTITLE\s+lc=8 start=+\<SUBTTL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmTitle 369964e468SBram Moolenaarsyn region masmTextArea start=+\<NAME\s+lc=4 start=+\<INCLUDE\s+lc=7 start=+\<INCLUDELIB\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmText 37ff1d0d4cSBram Moolenaarsyn match masmTitle "[^\t ;]\([^;]*[^\t ;]\)\?" contained contains=@Spell 389964e468SBram Moolenaarsyn match masmText "[^\t ;]\([^;]*[^\t ;]\)\?" contained 39071d4279SBram Moolenaar 409964e468SBram Moolenaarsyn region masmOptionOpt start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption 41ff1d0d4cSBram Moolenaarsyn region masmContextOpt start=+\<PUSHCONTEXT\s+lc=11 start=+\<POPCONTEXT\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmOption 429964e468SBram Moolenaarsyn region masmModelOpt start=+\.MODEL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmType 439964e468SBram Moolenaarsyn region masmSegmentOpt start=+\<SEGMENT\s+lc=7 end=+$+ end=+;+me=e-1 contains=masmOption,masmString 449964e468SBram Moolenaarsyn region masmProcOpt start=+\<PROC\s+lc=4 end=+$+ end=+;+me=e-1 contains=masmOption,masmType,masmRegister,masmIdentifier 45ff1d0d4cSBram Moolenaarsyn region masmAssumeOpt start=+\<ASSUME\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmOperator,masmType,masmRegister,masmIdentifier 469964e468SBram Moolenaarsyn region masmExpression start=+\.IF\s+lc=3 start=+\.WHILE\s+lc=6 start=+\.UNTIL\s+lc=6 start=+\<IF\s+lc=2 start=+\<IF2\s+lc=3 start=+\<ELSEIF\s+lc=6 start=+\<ELSEIF2\s+lc=7 start=+\<REPEAT\s+lc=6 start=+\<WHILE\s+lc=5 end=+$+ end=+;+me=e-1 contains=masmType,masmOperator,masmRegister,masmIdentifier,masmDecimal,masmBinary,masmHexadecimal,masmFloatRaw,masmString 479964e468SBram Moolenaar 489964e468SBram Moolenaarsyn keyword masmOption TINY SMALL COMPACT MEDIUM LARGE HUGE contained 499964e468SBram Moolenaarsyn keyword masmOption NEARSTACK FARSTACK contained 509964e468SBram Moolenaarsyn keyword masmOption PUBLIC PRIVATE STACK COMMON MEMORY AT contained 519964e468SBram Moolenaarsyn keyword masmOption BYTE WORD DWORD PARA PAGE contained 529964e468SBram Moolenaarsyn keyword masmOption USE16 USE32 FLAT contained 539964e468SBram Moolenaarsyn keyword masmOption INFO READ WRITE EXECUTE SHARED contained 549964e468SBram Moolenaarsyn keyword masmOption NOPAGE NOCACHE DISCARD contained 559964e468SBram Moolenaarsyn keyword masmOption READONLY USES FRAME contained 569964e468SBram Moolenaarsyn keyword masmOption CASEMAP DOTNAME NODOTNAME EMULATOR contained 579964e468SBram Moolenaarsyn keyword masmOption NOEMULATOR EPILOGUE EXPR16 EXPR32 contained 589964e468SBram Moolenaarsyn keyword masmOption LANGUAGE LJMP NOLJMP M510 NOM510 contained 599964e468SBram Moolenaarsyn keyword masmOption NOKEYWORD NOSIGNEXTEND OFFSET contained 609964e468SBram Moolenaarsyn keyword masmOption OLDMACROS NOOLDMACROS OLDSTRUCTS contained 619964e468SBram Moolenaarsyn keyword masmOption NOOLDSTRUCTS PROC PROLOGUE READONLY contained 629964e468SBram Moolenaarsyn keyword masmOption NOREADONLY SCOPED NOSCOPED SEGMENT contained 639964e468SBram Moolenaarsyn keyword masmOption SETIF2 contained 64ff1d0d4cSBram Moolenaarsyn keyword masmOption ABS ALL ASSUMES CPU ERROR EXPORT contained 65ff1d0d4cSBram Moolenaarsyn keyword masmOption FORCEFRAME LISTING LOADDS NONE contained 66ff1d0d4cSBram Moolenaarsyn keyword masmOption NONUNIQUE NOTHING OS_DOS RADIX REQ contained 679964e468SBram Moolenaarsyn keyword masmType STDCALL SYSCALL C BASIC FORTRAN PASCAL 689964e468SBram Moolenaarsyn keyword masmType PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32 699964e468SBram Moolenaarsyn keyword masmType REAL4 REAL8 REAL10 BYTE SBYTE TBYTE 709964e468SBram Moolenaarsyn keyword masmType WORD DWORD QWORD FWORD SWORD SDWORD 719964e468SBram Moolenaarsyn keyword masmOperator AND NOT OR SHL SHR XOR MOD DUP 729964e468SBram Moolenaarsyn keyword masmOperator EQ GE GT LE LT NE 739964e468SBram Moolenaarsyn keyword masmOperator LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF 749964e468SBram Moolenaarsyn keyword masmOperator CODEPTR DATAPTR FAR NEAR SHORT THIS TYPE 759964e468SBram Moolenaarsyn keyword masmOperator HIGH HIGHWORD LOW LOWWORD OPATTR MASK WIDTH 769964e468SBram Moolenaarsyn match masmOperator "OFFSET\(\sFLAT:\)\?" 779964e468SBram Moolenaarsyn match masmOperator ".TYPE\>" 789964e468SBram Moolenaarsyn match masmOperator "CARRY?" 799964e468SBram Moolenaarsyn match masmOperator "OVERFLOW?" 809964e468SBram Moolenaarsyn match masmOperator "PARITY?" 819964e468SBram Moolenaarsyn match masmOperator "SIGN?" 829964e468SBram Moolenaarsyn match masmOperator "ZERO?" 839964e468SBram Moolenaarsyn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT 849964e468SBram Moolenaarsyn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB 859964e468SBram Moolenaarsyn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE 869964e468SBram Moolenaarsyn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END 879964e468SBram Moolenaarsyn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN 889964e468SBram Moolenaarsyn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2 899964e468SBram Moolenaarsyn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB 909964e468SBram Moolenaarsyn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP 919964e468SBram Moolenaarsyn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE 929964e468SBram Moolenaarsyn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT 939964e468SBram Moolenaarsyn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC 949964e468SBram Moolenaarsyn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE 959964e468SBram Moolenaarsyn keyword masmDirective TYPEDEF UNION WHILE 969964e468SBram Moolenaarsyn match masmDirective "\.8086\>" 979964e468SBram Moolenaarsyn match masmDirective "\.8087\>" 989964e468SBram Moolenaarsyn match masmDirective "\.NO87\>" 999964e468SBram Moolenaarsyn match masmDirective "\.186\>" 1009964e468SBram Moolenaarsyn match masmDirective "\.286\>" 1019964e468SBram Moolenaarsyn match masmDirective "\.286C\>" 1029964e468SBram Moolenaarsyn match masmDirective "\.286P\>" 1039964e468SBram Moolenaarsyn match masmDirective "\.287\>" 1049964e468SBram Moolenaarsyn match masmDirective "\.386\>" 1059964e468SBram Moolenaarsyn match masmDirective "\.386C\>" 1069964e468SBram Moolenaarsyn match masmDirective "\.386P\>" 1079964e468SBram Moolenaarsyn match masmDirective "\.387\>" 1089964e468SBram Moolenaarsyn match masmDirective "\.486\>" 1099964e468SBram Moolenaarsyn match masmDirective "\.486P\>" 1109964e468SBram Moolenaarsyn match masmDirective "\.586\>" 1119964e468SBram Moolenaarsyn match masmDirective "\.586P\>" 1129964e468SBram Moolenaarsyn match masmDirective "\.686\>" 1139964e468SBram Moolenaarsyn match masmDirective "\.686P\>" 1149964e468SBram Moolenaarsyn match masmDirective "\.K3D\>" 1159964e468SBram Moolenaarsyn match masmDirective "\.MMX\>" 1169964e468SBram Moolenaarsyn match masmDirective "\.XMM\>" 1179964e468SBram Moolenaarsyn match masmDirective "\.ALPHA\>" 1189964e468SBram Moolenaarsyn match masmDirective "\.DOSSEG\>" 1199964e468SBram Moolenaarsyn match masmDirective "\.SEQ\>" 1209964e468SBram Moolenaarsyn match masmDirective "\.CODE\>" 1219964e468SBram Moolenaarsyn match masmDirective "\.CONST\>" 1229964e468SBram Moolenaarsyn match masmDirective "\.DATA\>" 1239964e468SBram Moolenaarsyn match masmDirective "\.DATA?" 1249964e468SBram Moolenaarsyn match masmDirective "\.EXIT\>" 1259964e468SBram Moolenaarsyn match masmDirective "\.FARDATA\>" 1269964e468SBram Moolenaarsyn match masmDirective "\.FARDATA?" 1279964e468SBram Moolenaarsyn match masmDirective "\.MODEL\>" 1289964e468SBram Moolenaarsyn match masmDirective "\.STACK\>" 1299964e468SBram Moolenaarsyn match masmDirective "\.STARTUP\>" 1309964e468SBram Moolenaarsyn match masmDirective "\.IF\>" 1319964e468SBram Moolenaarsyn match masmDirective "\.ELSE\>" 1329964e468SBram Moolenaarsyn match masmDirective "\.ELSEIF\>" 1339964e468SBram Moolenaarsyn match masmDirective "\.ENDIF\>" 1349964e468SBram Moolenaarsyn match masmDirective "\.REPEAT\>" 1359964e468SBram Moolenaarsyn match masmDirective "\.UNTIL\>" 1369964e468SBram Moolenaarsyn match masmDirective "\.UNTILCXZ\>" 1379964e468SBram Moolenaarsyn match masmDirective "\.WHILE\>" 1389964e468SBram Moolenaarsyn match masmDirective "\.ENDW\>" 1399964e468SBram Moolenaarsyn match masmDirective "\.BREAK\>" 1409964e468SBram Moolenaarsyn match masmDirective "\.CONTINUE\>" 1419964e468SBram Moolenaarsyn match masmDirective "\.ERR\>" 1429964e468SBram Moolenaarsyn match masmDirective "\.ERR1\>" 1439964e468SBram Moolenaarsyn match masmDirective "\.ERR2\>" 1449964e468SBram Moolenaarsyn match masmDirective "\.ERRB\>" 1459964e468SBram Moolenaarsyn match masmDirective "\.ERRDEF\>" 1469964e468SBram Moolenaarsyn match masmDirective "\.ERRDIF\>" 1479964e468SBram Moolenaarsyn match masmDirective "\.ERRDIFI\>" 1489964e468SBram Moolenaarsyn match masmDirective "\.ERRE\>" 1499964e468SBram Moolenaarsyn match masmDirective "\.ERRIDN\>" 1509964e468SBram Moolenaarsyn match masmDirective "\.ERRIDNI\>" 1519964e468SBram Moolenaarsyn match masmDirective "\.ERRNB\>" 1529964e468SBram Moolenaarsyn match masmDirective "\.ERRNDEF\>" 1539964e468SBram Moolenaarsyn match masmDirective "\.ERRNZ\>" 1549964e468SBram Moolenaarsyn match masmDirective "\.LALL\>" 1559964e468SBram Moolenaarsyn match masmDirective "\.SALL\>" 1569964e468SBram Moolenaarsyn match masmDirective "\.XALL\>" 1579964e468SBram Moolenaarsyn match masmDirective "\.LFCOND\>" 1589964e468SBram Moolenaarsyn match masmDirective "\.SFCOND\>" 1599964e468SBram Moolenaarsyn match masmDirective "\.TFCOND\>" 1609964e468SBram Moolenaarsyn match masmDirective "\.CREF\>" 1619964e468SBram Moolenaarsyn match masmDirective "\.NOCREF\>" 1629964e468SBram Moolenaarsyn match masmDirective "\.XCREF\>" 1639964e468SBram Moolenaarsyn match masmDirective "\.LIST\>" 1649964e468SBram Moolenaarsyn match masmDirective "\.NOLIST\>" 1659964e468SBram Moolenaarsyn match masmDirective "\.XLIST\>" 1669964e468SBram Moolenaarsyn match masmDirective "\.LISTALL\>" 1679964e468SBram Moolenaarsyn match masmDirective "\.LISTIF\>" 1689964e468SBram Moolenaarsyn match masmDirective "\.NOLISTIF\>" 1699964e468SBram Moolenaarsyn match masmDirective "\.LISTMACRO\>" 1709964e468SBram Moolenaarsyn match masmDirective "\.NOLISTMACRO\>" 1719964e468SBram Moolenaarsyn match masmDirective "\.LISTMACROALL\>" 1729964e468SBram Moolenaarsyn match masmDirective "\.FPO\>" 1739964e468SBram Moolenaarsyn match masmDirective "\.RADIX\>" 1749964e468SBram Moolenaarsyn match masmDirective "\.SAFESEH\>" 1759964e468SBram Moolenaarsyn match masmDirective "%OUT\>" 1769964e468SBram Moolenaarsyn match masmDirective "ALIGN\>" 1779964e468SBram Moolenaarsyn match masmOption "ALIGN([0-9]\+)" 178071d4279SBram Moolenaar 179071d4279SBram Moolenaarsyn keyword masmRegister AX BX CX DX SI DI BP SP 1809964e468SBram Moolenaarsyn keyword masmRegister CS DS SS ES FS GS 181071d4279SBram Moolenaarsyn keyword masmRegister AH BH CH DH AL BL CL DL 182071d4279SBram Moolenaarsyn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP 1839964e468SBram Moolenaarsyn keyword masmRegister CR0 CR2 CR3 CR4 1849964e468SBram Moolenaarsyn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7 1859964e468SBram Moolenaarsyn keyword masmRegister TR3 TR4 TR5 TR6 TR7 1869964e468SBram Moolenaarsyn match masmRegister "ST([0-7])" 187071d4279SBram Moolenaar 188b8ff1fb5SBram Moolenaar" x86-64 registers 189b8ff1fb5SBram Moolenaarsyn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP 190b8ff1fb5SBram Moolenaarsyn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15 191b8ff1fb5SBram Moolenaarsyn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D 192b8ff1fb5SBram Moolenaarsyn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W 193b8ff1fb5SBram Moolenaarsyn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B 194071d4279SBram Moolenaar 1954b60a6cdSBram Moolenaar" SSE/AVX registers 1964b60a6cdSBram Moolenaarsyn match masmRegister "\(X\|Y\)MM[0-9]\>" 1974b60a6cdSBram Moolenaarsyn match masmRegister "\(X\|Y\)MM1[0-5]\>" 1984b60a6cdSBram Moolenaar 1999964e468SBram Moolenaar" Instruction prefixes 2009964e468SBram Moolenaarsyn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ 201071d4279SBram Moolenaar 2029964e468SBram Moolenaar" 8086/8088 opcodes 2039964e468SBram Moolenaarsyn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD 2049964e468SBram Moolenaarsyn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC 2059964e468SBram Moolenaarsyn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET 2069964e468SBram Moolenaarsyn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW 2079964e468SBram Moolenaarsyn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ 2089964e468SBram Moolenaarsyn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB 2099964e468SBram Moolenaarsyn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH 2109964e468SBram Moolenaarsyn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL 2119964e468SBram Moolenaarsyn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI 2129964e468SBram Moolenaarsyn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB 2139964e468SBram Moolenaarsyn keyword masmOpcode XOR 2149964e468SBram Moolenaarsyn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" 2159964e468SBram Moolenaar 2169964e468SBram Moolenaar" 80186 opcodes 2179964e468SBram Moolenaarsyn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB 2189964e468SBram Moolenaarsyn keyword masmOpcode OUTSW POPA PUSHA PUSHW 2199964e468SBram Moolenaar 2209964e468SBram Moolenaar" 80286 opcodes 2219964e468SBram Moolenaarsyn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW 2229964e468SBram Moolenaar 2239964e468SBram Moolenaar" 80286/80386 privileged opcodes 2249964e468SBram Moolenaarsyn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR 2259964e468SBram Moolenaar 2269964e468SBram Moolenaar" 80386 opcodes 2279964e468SBram Moolenaarsyn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD 2289964e468SBram Moolenaarsyn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD 2299964e468SBram Moolenaarsyn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX 2309964e468SBram Moolenaarsyn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD 2319964e468SBram Moolenaarsyn keyword masmOpcode SCASD SHLD SHRD STOSD 2329964e468SBram Moolenaarsyn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" 2339964e468SBram Moolenaar 2349964e468SBram Moolenaar" 80486 opcodes 2359964e468SBram Moolenaarsyn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD 2369964e468SBram Moolenaar 2379964e468SBram Moolenaar" Floating-point opcodes as of 487 238071d4279SBram Moolenaarsyn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX 239071d4279SBram Moolenaarsyn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI 240071d4279SBram Moolenaarsyn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI 241071d4279SBram Moolenaarsyn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD 242071d4279SBram Moolenaarsyn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB 243071d4279SBram Moolenaarsyn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E 244071d4279SBram Moolenaarsyn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN 2459964e468SBram Moolenaarsyn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE 2469964e468SBram Moolenaarsyn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW 2479964e468SBram Moolenaarsyn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB 2489964e468SBram Moolenaarsyn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP 2499964e468SBram Moolenaarsyn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 2509964e468SBram Moolenaar 2519964e468SBram Moolenaar" Floating-point opcodes in Pentium and later processors 2529964e468SBram Moolenaarsyn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE 2539964e468SBram Moolenaarsyn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP 2549964e468SBram Moolenaarsyn keyword masmOpFloat FXSAVE FXRSTOR 2559964e468SBram Moolenaar 2569964e468SBram Moolenaar" MMX opcodes (Pentium w/ MMX, Pentium II, and later) 2579964e468SBram Moolenaarsyn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB 2589964e468SBram Moolenaarsyn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ 2599964e468SBram Moolenaarsyn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ 2609964e468SBram Moolenaarsyn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW 2619964e468SBram Moolenaarsyn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW 2629964e468SBram Moolenaarsyn keyword masmOpcode PMULHW PMULLW PMADDWD 2639964e468SBram Moolenaarsyn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD 2649964e468SBram Moolenaarsyn keyword masmOpcode PAND PANDN POR PXOR 2659964e468SBram Moolenaarsyn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD 2669964e468SBram Moolenaarsyn keyword masmOpcode EMMS 2679964e468SBram Moolenaar 2689964e468SBram Moolenaar" SSE opcodes (Pentium III and later) 2699964e468SBram Moolenaarsyn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS 2709964e468SBram Moolenaarsyn keyword masmOpcode MOVMSKPS MOVSS 2719964e468SBram Moolenaarsyn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS 2729964e468SBram Moolenaarsyn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS 2739964e468SBram Moolenaarsyn keyword masmOpcode MAXPS MAXSS MINPS MINSS 2749964e468SBram Moolenaarsyn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS 2759964e468SBram Moolenaarsyn keyword masmOpcode ANDPS ANDNPS ORPS XORPS 2769964e468SBram Moolenaarsyn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS 2779964e468SBram Moolenaarsyn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI 2789964e468SBram Moolenaarsyn keyword masmOpcode CVTSS2SI CVTTSS2SI 2799964e468SBram Moolenaarsyn keyword masmOpcode LDMXCSR STMXCSR 2809964e468SBram Moolenaarsyn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW 2819964e468SBram Moolenaarsyn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW 2829964e468SBram Moolenaarsyn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE 2839964e468SBram Moolenaarsyn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA 2849964e468SBram Moolenaar 2859964e468SBram Moolenaar" SSE2 opcodes (Pentium 4 and later) 2869964e468SBram Moolenaarsyn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD 2879964e468SBram Moolenaarsyn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD 2889964e468SBram Moolenaarsyn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD 2899964e468SBram Moolenaarsyn keyword masmOpcode ANDPD ANDNPD ORPD XORPD 2909964e468SBram Moolenaarsyn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD 2919964e468SBram Moolenaarsyn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD 2929964e468SBram Moolenaarsyn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ 2939964e468SBram Moolenaarsyn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS 2949964e468SBram Moolenaarsyn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD 2959964e468SBram Moolenaarsyn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ 2969964e468SBram Moolenaarsyn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ 2979964e468SBram Moolenaarsyn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD 2989964e468SBram Moolenaarsyn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ 2999964e468SBram Moolenaarsyn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU 3009964e468SBram Moolenaarsyn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI 3019964e468SBram Moolenaar 3029964e468SBram Moolenaar" SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later) 3039964e468SBram Moolenaarsyn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD 3049964e468SBram Moolenaarsyn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD 3059964e468SBram Moolenaarsyn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT 3069964e468SBram Moolenaar 3074b60a6cdSBram Moolenaar" SSSE3 opcodes (Core and later) 3084b60a6cdSBram Moolenaarsyn keyword masmOpcode PSIGNB PSIGNW PSIGND PABSB PABSW PABSD 3094b60a6cdSBram Moolenaarsyn keyword masmOpcode PALIGNR PSHUFB PMULHRSW PMADDUBSW 3104b60a6cdSBram Moolenaarsyn keyword masmOpcode PHSUBW PHSUBD PHSUBSW PHADDW PHADDD PHADDSW 3114b60a6cdSBram Moolenaar 3124b60a6cdSBram Moolenaar" SSE 4.1 opcodes (Penryn and later) 3134b60a6cdSBram Moolenaarsyn keyword masmOpcode MPSADBW PHMINPOSUW PMULDQ PMULLD DPPS DPPD 3144b60a6cdSBram Moolenaarsyn keyword masmOpcode BLENDPS BLENDPD BLENDVPS BLENDVPD 3154b60a6cdSBram Moolenaarsyn keyword masmOpcode PBLENDVB PBLENDW 3164b60a6cdSBram Moolenaarsyn keyword masmOpcode PMINSB PMAXSB PMINSD PMAXSD 3174b60a6cdSBram Moolenaarsyn keyword masmOpcode PMINUW PMAXUW PMINUD PMAXUD 3184b60a6cdSBram Moolenaarsyn keyword masmOpcode ROUNDPS ROUNDSS ROUNDPD ROUNDSD 3194b60a6cdSBram Moolenaarsyn keyword masmOpcode INSERTPS PINSRB PINSRD PINSRQ 3204b60a6cdSBram Moolenaarsyn keyword masmOpcode EXTRACTPS PEXTRB PEXTRD PEXTRQ 3214b60a6cdSBram Moolenaarsyn keyword masmOpcode PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD 3224b60a6cdSBram Moolenaarsyn keyword masmOpcode PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD 3234b60a6cdSBram Moolenaarsyn keyword masmOpcode PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ 3244b60a6cdSBram Moolenaarsyn keyword masmOpcode PTEST PCMPEQQ PACKUSDW MOVNTDQA 3254b60a6cdSBram Moolenaar 3264b60a6cdSBram Moolenaar" SSE 4.2 opcodes (Nehalem and later) 3274b60a6cdSBram Moolenaarsyn keyword masmOpcode PCMPESTRI PCMPESTRM PCMPISTRI PCMPISTRM PCMPGTQ 3284b60a6cdSBram Moolenaarsyn keyword masmOpcode CRC32 POPCNT LZCNT 3294b60a6cdSBram Moolenaar 3304b60a6cdSBram Moolenaar" AES-NI (Westmere (2010) and later) 3314b60a6cdSBram Moolenaarsyn keyword masmOpcode AESENC AESENCLAST AESDEC AESDECLAST 3324b60a6cdSBram Moolenaarsyn keyword masmOpcode AESKEYGENASSIST AESIMC PCLMULQDQ 3334b60a6cdSBram Moolenaar 3344b60a6cdSBram Moolenaar" AVX (Sandy Bridge (2011) and later) 3354b60a6cdSBram Moolenaarsyn keyword masmOpcode VBROADCASTSS VBROADCASTSD VBROADCASTF128 3364b60a6cdSBram Moolenaarsyn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD 3374b60a6cdSBram Moolenaarsyn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128 3384b60a6cdSBram Moolenaarsyn keyword masmOpcode VZEROALL VZEROUPPER 3394b60a6cdSBram Moolenaar 3409964e468SBram Moolenaar" Other opcodes in Pentium and later processors 3419964e468SBram Moolenaarsyn keyword masmOpcode CMPXCHG8B CPUID UD2 3429964e468SBram Moolenaarsyn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT 3439964e468SBram Moolenaarsyn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" 3449964e468SBram Moolenaar 345071d4279SBram Moolenaar 3464b60a6cdSBram Moolenaar" The default highlighting 3474b60a6cdSBram Moolenaarhi def link masmLabel PreProc 3484b60a6cdSBram Moolenaarhi def link masmComment Comment 3494b60a6cdSBram Moolenaarhi def link masmDirective Statement 3504b60a6cdSBram Moolenaarhi def link masmType Type 3514b60a6cdSBram Moolenaarhi def link masmOperator Type 3524b60a6cdSBram Moolenaarhi def link masmOption Special 3534b60a6cdSBram Moolenaarhi def link masmRegister Special 3544b60a6cdSBram Moolenaarhi def link masmString String 3554b60a6cdSBram Moolenaarhi def link masmText String 3564b60a6cdSBram Moolenaarhi def link masmTitle Title 3574b60a6cdSBram Moolenaarhi def link masmOpcode Statement 3584b60a6cdSBram Moolenaarhi def link masmOpFloat Statement 359071d4279SBram Moolenaar 3604b60a6cdSBram Moolenaarhi def link masmHexadecimal Number 3614b60a6cdSBram Moolenaarhi def link masmDecimal Number 3624b60a6cdSBram Moolenaarhi def link masmOctal Number 3634b60a6cdSBram Moolenaarhi def link masmBinary Number 3644b60a6cdSBram Moolenaarhi def link masmFloatRaw Number 3654b60a6cdSBram Moolenaarhi def link masmFloat Number 366071d4279SBram Moolenaar 3674b60a6cdSBram Moolenaarhi def link masmIdentifier Identifier 368071d4279SBram Moolenaar 3699964e468SBram Moolenaarsyntax sync minlines=50 3709964e468SBram Moolenaar 371071d4279SBram Moolenaarlet b:current_syntax = "masm" 372071d4279SBram Moolenaar 373b8ff1fb5SBram Moolenaarlet &cpo = s:cpo_save 374b8ff1fb5SBram Moolenaarunlet s:cpo_save 375b8ff1fb5SBram Moolenaar 376071d4279SBram Moolenaar" vim: ts=8 377