xref: /vim-8.2.3635/runtime/syntax/masm.vim (revision 47e13953)
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