home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / dos / syntax / masm.vim < prev    next >
Encoding:
Text File  |  2012-05-31  |  16.0 KB  |  356 lines

  1. " Vim syntax file
  2. " Language:    Microsoft Macro Assembler (80x86)
  3. " Orig Author:    Rob Brady <robb@datatone.com>
  4. " Maintainer:    Wu Yongwei <wuyongwei@gmail.com>
  5. " Last Change:    $Date: 2012/02/04 12:45:39 $
  6. " $Revision: 1.46 $
  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.  
  16. let s:cpo_save = &cpo
  17. set cpo&vim
  18.  
  19. syn case ignore
  20.  
  21.  
  22. syn match masmIdentifier    "[@a-z_$?][@a-z0-9_$?]*"
  23. syn match masmLabel        "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
  24.  
  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\+\)\?\)\?"
  31.  
  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
  36.  
  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
  39. syn match masmTitle        "[^\t ;]\([^;]*[^\t ;]\)\?" contained contains=@Spell
  40. syn match masmText        "[^\t ;]\([^;]*[^\t ;]\)\?" contained
  41.  
  42. syn region masmOptionOpt    start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption
  43. syn region masmContextOpt    start=+\<PUSHCONTEXT\s+lc=11 start=+\<POPCONTEXT\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmOption
  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
  47. syn region masmAssumeOpt    start=+\<ASSUME\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmOperator,masmType,masmRegister,masmIdentifier
  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
  49.  
  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
  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
  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]\+)"
  180.  
  181. syn keyword masmRegister    AX BX CX DX SI DI BP SP
  182. syn keyword masmRegister    CS DS SS ES FS GS
  183. syn keyword masmRegister    AH BH CH DH AL BL CL DL
  184. syn keyword masmRegister    EAX EBX ECX EDX ESI EDI EBP ESP
  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])"
  189.  
  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
  196.  
  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]\)\)\)\>"
  213.  
  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
  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
  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.  
  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
  323.   HiLink masmLabel    PreProc
  324.   HiLink masmComment    Comment
  325.   HiLink masmDirective    Statement
  326.   HiLink masmType    Type
  327.   HiLink masmOperator    Type
  328.   HiLink masmOption    Special
  329.   HiLink masmRegister    Special
  330.   HiLink masmString    String
  331.   HiLink masmText    String
  332.   HiLink masmTitle    Title
  333.   HiLink masmOpcode    Statement
  334.   HiLink masmOpFloat    Statement
  335.  
  336.   HiLink masmHexadecimal Number
  337.   HiLink masmDecimal    Number
  338.   HiLink masmOctal    Number
  339.   HiLink masmBinary    Number
  340.   HiLink masmFloatRaw    Number
  341.   HiLink masmFloat    Number
  342.  
  343.   HiLink masmIdentifier Identifier
  344.  
  345.   syntax sync minlines=50
  346.  
  347.   delcommand HiLink
  348. endif
  349.  
  350. let b:current_syntax = "masm"
  351.  
  352. let &cpo = s:cpo_save
  353. unlet s:cpo_save
  354.  
  355. " vim: ts=8
  356.