7
|
1 " Vim syntax file
|
1121
|
2 " Language: Microsoft Macro Assembler (80x86)
|
|
3 " Orig Author: Rob Brady <robb@datatone.com>
|
|
4 " Maintainer: Wu Yongwei <wuyongwei@gmail.com>
|
3312
|
5 " Last Change: $Date: 2012/02/04 12:45:39 $
|
|
6 " $Revision: 1.46 $
|
7
|
7
|
|
8 " For version 5.x: Clear all syntax items
|
|
9 " For version 6.x: Quit when a syntax file was already loaded
|
|
10 if version < 600
|
|
11 syntax clear
|
|
12 elseif exists("b:current_syntax")
|
|
13 finish
|
|
14 endif
|
|
15
|
3312
|
16 let s:cpo_save = &cpo
|
|
17 set cpo&vim
|
|
18
|
7
|
19 syn case ignore
|
|
20
|
|
21
|
1121
|
22 syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*"
|
|
23 syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
|
7
|
24
|
1121
|
25 syn match masmDecimal "[-+]\?\d\+[dt]\?"
|
|
26 syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies!
|
|
27 syn match masmOctal "[-+]\?[0-7]\+[oq]"
|
|
28 syn match masmHexadecimal "[-+]\?[0-9]\x*h"
|
|
29 syn match masmFloatRaw "[-+]\?[0-9]\x*r"
|
|
30 syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?"
|
7
|
31
|
1121
|
32 syn match masmComment ";.*" contains=@Spell
|
|
33 syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell
|
|
34 syn region masmString start=+'+ end=+'+ oneline contains=@Spell
|
|
35 syn region masmString start=+"+ end=+"+ oneline contains=@Spell
|
7
|
36
|
1121
|
37 syn region masmTitleArea start=+\<TITLE\s+lc=5 start=+\<SUBTITLE\s+lc=8 start=+\<SUBTTL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmTitle
|
|
38 syn region masmTextArea start=+\<NAME\s+lc=4 start=+\<INCLUDE\s+lc=7 start=+\<INCLUDELIB\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmText
|
1199
|
39 syn match masmTitle "[^\t ;]\([^;]*[^\t ;]\)\?" contained contains=@Spell
|
1121
|
40 syn match masmText "[^\t ;]\([^;]*[^\t ;]\)\?" contained
|
|
41
|
|
42 syn region masmOptionOpt start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption
|
1199
|
43 syn region masmContextOpt start=+\<PUSHCONTEXT\s+lc=11 start=+\<POPCONTEXT\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmOption
|
1121
|
44 syn region masmModelOpt start=+\.MODEL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmType
|
|
45 syn region masmSegmentOpt start=+\<SEGMENT\s+lc=7 end=+$+ end=+;+me=e-1 contains=masmOption,masmString
|
|
46 syn region masmProcOpt start=+\<PROC\s+lc=4 end=+$+ end=+;+me=e-1 contains=masmOption,masmType,masmRegister,masmIdentifier
|
1199
|
47 syn region masmAssumeOpt start=+\<ASSUME\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmOperator,masmType,masmRegister,masmIdentifier
|
1121
|
48 syn 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
|
7
|
49
|
1121
|
50 syn keyword masmOption TINY SMALL COMPACT MEDIUM LARGE HUGE contained
|
|
51 syn keyword masmOption NEARSTACK FARSTACK contained
|
|
52 syn keyword masmOption PUBLIC PRIVATE STACK COMMON MEMORY AT contained
|
|
53 syn keyword masmOption BYTE WORD DWORD PARA PAGE contained
|
|
54 syn keyword masmOption USE16 USE32 FLAT contained
|
|
55 syn keyword masmOption INFO READ WRITE EXECUTE SHARED contained
|
|
56 syn keyword masmOption NOPAGE NOCACHE DISCARD contained
|
|
57 syn keyword masmOption READONLY USES FRAME contained
|
|
58 syn keyword masmOption CASEMAP DOTNAME NODOTNAME EMULATOR contained
|
|
59 syn keyword masmOption NOEMULATOR EPILOGUE EXPR16 EXPR32 contained
|
|
60 syn keyword masmOption LANGUAGE LJMP NOLJMP M510 NOM510 contained
|
|
61 syn keyword masmOption NOKEYWORD NOSIGNEXTEND OFFSET contained
|
|
62 syn keyword masmOption OLDMACROS NOOLDMACROS OLDSTRUCTS contained
|
|
63 syn keyword masmOption NOOLDSTRUCTS PROC PROLOGUE READONLY contained
|
|
64 syn keyword masmOption NOREADONLY SCOPED NOSCOPED SEGMENT contained
|
|
65 syn keyword masmOption SETIF2 contained
|
1199
|
66 syn keyword masmOption ABS ALL ASSUMES CPU ERROR EXPORT contained
|
|
67 syn keyword masmOption FORCEFRAME LISTING LOADDS NONE contained
|
|
68 syn keyword masmOption NONUNIQUE NOTHING OS_DOS RADIX REQ contained
|
1121
|
69 syn keyword masmType STDCALL SYSCALL C BASIC FORTRAN PASCAL
|
|
70 syn keyword masmType PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32
|
|
71 syn keyword masmType REAL4 REAL8 REAL10 BYTE SBYTE TBYTE
|
|
72 syn keyword masmType WORD DWORD QWORD FWORD SWORD SDWORD
|
|
73 syn keyword masmOperator AND NOT OR SHL SHR XOR MOD DUP
|
|
74 syn keyword masmOperator EQ GE GT LE LT NE
|
|
75 syn keyword masmOperator LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF
|
|
76 syn keyword masmOperator CODEPTR DATAPTR FAR NEAR SHORT THIS TYPE
|
|
77 syn keyword masmOperator HIGH HIGHWORD LOW LOWWORD OPATTR MASK WIDTH
|
|
78 syn match masmOperator "OFFSET\(\sFLAT:\)\?"
|
|
79 syn match masmOperator ".TYPE\>"
|
|
80 syn match masmOperator "CARRY?"
|
|
81 syn match masmOperator "OVERFLOW?"
|
|
82 syn match masmOperator "PARITY?"
|
|
83 syn match masmOperator "SIGN?"
|
|
84 syn match masmOperator "ZERO?"
|
|
85 syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT
|
|
86 syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB
|
|
87 syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE
|
|
88 syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END
|
|
89 syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN
|
|
90 syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2
|
|
91 syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB
|
|
92 syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP
|
|
93 syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE
|
|
94 syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT
|
|
95 syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC
|
|
96 syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE
|
|
97 syn keyword masmDirective TYPEDEF UNION WHILE
|
|
98 syn match masmDirective "\.8086\>"
|
|
99 syn match masmDirective "\.8087\>"
|
|
100 syn match masmDirective "\.NO87\>"
|
|
101 syn match masmDirective "\.186\>"
|
|
102 syn match masmDirective "\.286\>"
|
|
103 syn match masmDirective "\.286C\>"
|
|
104 syn match masmDirective "\.286P\>"
|
|
105 syn match masmDirective "\.287\>"
|
|
106 syn match masmDirective "\.386\>"
|
|
107 syn match masmDirective "\.386C\>"
|
|
108 syn match masmDirective "\.386P\>"
|
|
109 syn match masmDirective "\.387\>"
|
|
110 syn match masmDirective "\.486\>"
|
|
111 syn match masmDirective "\.486P\>"
|
|
112 syn match masmDirective "\.586\>"
|
|
113 syn match masmDirective "\.586P\>"
|
|
114 syn match masmDirective "\.686\>"
|
|
115 syn match masmDirective "\.686P\>"
|
|
116 syn match masmDirective "\.K3D\>"
|
|
117 syn match masmDirective "\.MMX\>"
|
|
118 syn match masmDirective "\.XMM\>"
|
|
119 syn match masmDirective "\.ALPHA\>"
|
|
120 syn match masmDirective "\.DOSSEG\>"
|
|
121 syn match masmDirective "\.SEQ\>"
|
|
122 syn match masmDirective "\.CODE\>"
|
|
123 syn match masmDirective "\.CONST\>"
|
|
124 syn match masmDirective "\.DATA\>"
|
|
125 syn match masmDirective "\.DATA?"
|
|
126 syn match masmDirective "\.EXIT\>"
|
|
127 syn match masmDirective "\.FARDATA\>"
|
|
128 syn match masmDirective "\.FARDATA?"
|
|
129 syn match masmDirective "\.MODEL\>"
|
|
130 syn match masmDirective "\.STACK\>"
|
|
131 syn match masmDirective "\.STARTUP\>"
|
|
132 syn match masmDirective "\.IF\>"
|
|
133 syn match masmDirective "\.ELSE\>"
|
|
134 syn match masmDirective "\.ELSEIF\>"
|
|
135 syn match masmDirective "\.ENDIF\>"
|
|
136 syn match masmDirective "\.REPEAT\>"
|
|
137 syn match masmDirective "\.UNTIL\>"
|
|
138 syn match masmDirective "\.UNTILCXZ\>"
|
|
139 syn match masmDirective "\.WHILE\>"
|
|
140 syn match masmDirective "\.ENDW\>"
|
|
141 syn match masmDirective "\.BREAK\>"
|
|
142 syn match masmDirective "\.CONTINUE\>"
|
|
143 syn match masmDirective "\.ERR\>"
|
|
144 syn match masmDirective "\.ERR1\>"
|
|
145 syn match masmDirective "\.ERR2\>"
|
|
146 syn match masmDirective "\.ERRB\>"
|
|
147 syn match masmDirective "\.ERRDEF\>"
|
|
148 syn match masmDirective "\.ERRDIF\>"
|
|
149 syn match masmDirective "\.ERRDIFI\>"
|
|
150 syn match masmDirective "\.ERRE\>"
|
|
151 syn match masmDirective "\.ERRIDN\>"
|
|
152 syn match masmDirective "\.ERRIDNI\>"
|
|
153 syn match masmDirective "\.ERRNB\>"
|
|
154 syn match masmDirective "\.ERRNDEF\>"
|
|
155 syn match masmDirective "\.ERRNZ\>"
|
|
156 syn match masmDirective "\.LALL\>"
|
|
157 syn match masmDirective "\.SALL\>"
|
|
158 syn match masmDirective "\.XALL\>"
|
|
159 syn match masmDirective "\.LFCOND\>"
|
|
160 syn match masmDirective "\.SFCOND\>"
|
|
161 syn match masmDirective "\.TFCOND\>"
|
|
162 syn match masmDirective "\.CREF\>"
|
|
163 syn match masmDirective "\.NOCREF\>"
|
|
164 syn match masmDirective "\.XCREF\>"
|
|
165 syn match masmDirective "\.LIST\>"
|
|
166 syn match masmDirective "\.NOLIST\>"
|
|
167 syn match masmDirective "\.XLIST\>"
|
|
168 syn match masmDirective "\.LISTALL\>"
|
|
169 syn match masmDirective "\.LISTIF\>"
|
|
170 syn match masmDirective "\.NOLISTIF\>"
|
|
171 syn match masmDirective "\.LISTMACRO\>"
|
|
172 syn match masmDirective "\.NOLISTMACRO\>"
|
|
173 syn match masmDirective "\.LISTMACROALL\>"
|
|
174 syn match masmDirective "\.FPO\>"
|
|
175 syn match masmDirective "\.RADIX\>"
|
|
176 syn match masmDirective "\.SAFESEH\>"
|
|
177 syn match masmDirective "%OUT\>"
|
|
178 syn match masmDirective "ALIGN\>"
|
|
179 syn match masmOption "ALIGN([0-9]\+)"
|
7
|
180
|
|
181 syn keyword masmRegister AX BX CX DX SI DI BP SP
|
1121
|
182 syn keyword masmRegister CS DS SS ES FS GS
|
7
|
183 syn keyword masmRegister AH BH CH DH AL BL CL DL
|
|
184 syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP
|
1121
|
185 syn keyword masmRegister CR0 CR2 CR3 CR4
|
|
186 syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7
|
|
187 syn keyword masmRegister TR3 TR4 TR5 TR6 TR7
|
|
188 syn match masmRegister "ST([0-7])"
|
7
|
189
|
3312
|
190 " x86-64 registers
|
|
191 syn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP
|
|
192 syn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15
|
|
193 syn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D
|
|
194 syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W
|
|
195 syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B
|
7
|
196
|
1121
|
197 " Instruction prefixes
|
|
198 syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ
|
|
199
|
|
200 " 8086/8088 opcodes
|
|
201 syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD
|
|
202 syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC
|
|
203 syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET
|
|
204 syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW
|
|
205 syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ
|
|
206 syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB
|
|
207 syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH
|
|
208 syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL
|
|
209 syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI
|
|
210 syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB
|
|
211 syn keyword masmOpcode XOR
|
|
212 syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
|
7
|
213
|
1121
|
214 " 80186 opcodes
|
|
215 syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB
|
|
216 syn keyword masmOpcode OUTSW POPA PUSHA PUSHW
|
|
217
|
|
218 " 80286 opcodes
|
|
219 syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW
|
|
220
|
|
221 " 80286/80386 privileged opcodes
|
|
222 syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR
|
|
223
|
|
224 " 80386 opcodes
|
|
225 syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD
|
|
226 syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD
|
|
227 syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX
|
|
228 syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD
|
|
229 syn keyword masmOpcode SCASD SHLD SHRD STOSD
|
|
230 syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
|
|
231
|
|
232 " 80486 opcodes
|
|
233 syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD
|
|
234
|
|
235 " Floating-point opcodes as of 487
|
7
|
236 syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX
|
|
237 syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
|
|
238 syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI
|
|
239 syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD
|
|
240 syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB
|
|
241 syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E
|
|
242 syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN
|
1121
|
243 syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE
|
|
244 syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW
|
|
245 syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB
|
|
246 syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
|
|
247 syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1
|
|
248
|
|
249 " Floating-point opcodes in Pentium and later processors
|
|
250 syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE
|
|
251 syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP
|
|
252 syn keyword masmOpFloat FXSAVE FXRSTOR
|
|
253
|
|
254 " MMX opcodes (Pentium w/ MMX, Pentium II, and later)
|
|
255 syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB
|
|
256 syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ
|
|
257 syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ
|
|
258 syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW
|
|
259 syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW
|
|
260 syn keyword masmOpcode PMULHW PMULLW PMADDWD
|
|
261 syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD
|
|
262 syn keyword masmOpcode PAND PANDN POR PXOR
|
|
263 syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD
|
|
264 syn keyword masmOpcode EMMS
|
|
265
|
|
266 " SSE opcodes (Pentium III and later)
|
|
267 syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS
|
|
268 syn keyword masmOpcode MOVMSKPS MOVSS
|
|
269 syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS
|
|
270 syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS
|
|
271 syn keyword masmOpcode MAXPS MAXSS MINPS MINSS
|
|
272 syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS
|
|
273 syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS
|
|
274 syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS
|
|
275 syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI
|
|
276 syn keyword masmOpcode CVTSS2SI CVTTSS2SI
|
|
277 syn keyword masmOpcode LDMXCSR STMXCSR
|
|
278 syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW
|
|
279 syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW
|
|
280 syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE
|
|
281 syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA
|
|
282
|
|
283 " SSE2 opcodes (Pentium 4 and later)
|
|
284 syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD
|
|
285 syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD
|
|
286 syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD
|
|
287 syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD
|
|
288 syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD
|
|
289 syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD
|
|
290 syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ
|
|
291 syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS
|
|
292 syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD
|
|
293 syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ
|
|
294 syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ
|
|
295 syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD
|
|
296 syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ
|
|
297 syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU
|
|
298 syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI
|
|
299
|
|
300 " SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later)
|
|
301 syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD
|
|
302 syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD
|
|
303 syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT
|
|
304
|
|
305 " Other opcodes in Pentium and later processors
|
|
306 syn keyword masmOpcode CMPXCHG8B CPUID UD2
|
|
307 syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT
|
|
308 syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
|
|
309
|
7
|
310
|
|
311 " Define the default highlighting.
|
|
312 " For version 5.7 and earlier: only when not done already
|
|
313 " For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
314 if version >= 508 || !exists("did_masm_syntax_inits")
|
|
315 if version < 508
|
|
316 let did_masm_syntax_inits = 1
|
|
317 command -nargs=+ HiLink hi link <args>
|
|
318 else
|
|
319 command -nargs=+ HiLink hi def link <args>
|
|
320 endif
|
|
321
|
|
322 " The default methods for highlighting. Can be overridden later
|
1121
|
323 HiLink masmLabel PreProc
|
7
|
324 HiLink masmComment Comment
|
|
325 HiLink masmDirective Statement
|
1121
|
326 HiLink masmType Type
|
|
327 HiLink masmOperator Type
|
|
328 HiLink masmOption Special
|
|
329 HiLink masmRegister Special
|
7
|
330 HiLink masmString String
|
1121
|
331 HiLink masmText String
|
|
332 HiLink masmTitle Title
|
|
333 HiLink masmOpcode Statement
|
|
334 HiLink masmOpFloat Statement
|
7
|
335
|
|
336 HiLink masmHexadecimal Number
|
|
337 HiLink masmDecimal Number
|
1121
|
338 HiLink masmOctal Number
|
7
|
339 HiLink masmBinary Number
|
1121
|
340 HiLink masmFloatRaw Number
|
7
|
341 HiLink masmFloat Number
|
|
342
|
|
343 HiLink masmIdentifier Identifier
|
|
344
|
1121
|
345 syntax sync minlines=50
|
|
346
|
7
|
347 delcommand HiLink
|
|
348 endif
|
|
349
|
|
350 let b:current_syntax = "masm"
|
|
351
|
3312
|
352 let &cpo = s:cpo_save
|
|
353 unlet s:cpo_save
|
|
354
|
7
|
355 " vim: ts=8
|