1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: NASM - The Netwide Assembler (v0.98) 3690afe1fSBram Moolenaar" Maintainer: Andrii Sokolov <[email protected]> 44a74803eSBram Moolenaar" Original Author: Manuel M.H. Stol <[email protected]> 54a74803eSBram Moolenaar" Former Maintainer: Manuel M.H. Stol <[email protected]> 6*130cbfc3SBram Moolenaar" Contributors: Leonard König <[email protected]> (C string highlighting), Peter Stanhope <[email protected]> (Add missing 64-bit mode registers) 7690afe1fSBram Moolenaar" Last Change: 2017 Jan 23 84a74803eSBram Moolenaar" NASM Home: http://www.nasm.us/ 9071d4279SBram Moolenaar 10071d4279SBram Moolenaar 11071d4279SBram Moolenaar 12071d4279SBram Moolenaar" Setup Syntax: 1389bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1489bcfda6SBram Moolenaarif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar" Assembler syntax is case insensetive 18071d4279SBram Moolenaarsyn case ignore 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar 21071d4279SBram Moolenaar 22071d4279SBram Moolenaar" Vim search and movement commands on identifers 23071d4279SBram Moolenaar" Comments at start of a line inside which to skip search for indentifiers 24071d4279SBram Moolenaarsetlocal comments=:; 25071d4279SBram Moolenaar" Identifier Keyword characters (defines \k) 26071d4279SBram Moolenaarsetlocal iskeyword=@,48-57,#,$,.,?,@-@,_,~ 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar" Comments: 30071d4279SBram Moolenaarsyn region nasmComment start=";" keepend end="$" contains=@nasmGrpInComments 31071d4279SBram Moolenaarsyn region nasmSpecialComment start=";\*\*\*" keepend end="$" 32071d4279SBram Moolenaarsyn keyword nasmInCommentTodo contained TODO FIXME XXX[XXXXX] 33071d4279SBram Moolenaarsyn cluster nasmGrpInComments contains=nasmInCommentTodo 34071d4279SBram Moolenaarsyn cluster nasmGrpComments contains=@nasmGrpInComments,nasmComment,nasmSpecialComment 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar 37071d4279SBram Moolenaar 38071d4279SBram Moolenaar" Label Identifiers: 39071d4279SBram Moolenaar" in NASM: 'Everything is a Label' 40071d4279SBram Moolenaar" Definition Label = label defined by %[i]define or %[i]assign 41071d4279SBram Moolenaar" Identifier Label = label defined as first non-keyword on a line or %[i]macro 425dc6252dSBram Moolenaarsyn match nasmLabelError "$\=\(\d\+\K\|[#.@]\|\$\$\k\)\k*\>" 43071d4279SBram Moolenaarsyn match nasmLabel "\<\(\h\|[?@]\)\k*\>" 44071d4279SBram Moolenaarsyn match nasmLabel "[\$\~]\(\h\|[?@]\)\k*\>"lc=1 45071d4279SBram Moolenaar" Labels starting with one or two '.' are special 46071d4279SBram Moolenaarsyn match nasmLocalLabel "\<\.\(\w\|[#$?@~]\)\k*\>" 47071d4279SBram Moolenaarsyn match nasmLocalLabel "\<\$\.\(\w\|[#$?@~]\)\k*\>"ms=s+1 48071d4279SBram Moolenaarif !exists("nasm_no_warn") 495dc6252dSBram Moolenaar syn match nasmLabelWarn "\<\~\=\$\=[_.][_.\~]*\>" 50071d4279SBram Moolenaarendif 51071d4279SBram Moolenaarif exists("nasm_loose_syntax") 52071d4279SBram Moolenaar syn match nasmSpecialLabel "\<\.\.@\k\+\>" 53071d4279SBram Moolenaar syn match nasmSpecialLabel "\<\$\.\.@\k\+\>"ms=s+1 54071d4279SBram Moolenaar if !exists("nasm_no_warn") 55071d4279SBram Moolenaar syn match nasmLabelWarn "\<\$\=\.\.@\(\d\|[#$\.~]\)\k*\>" 56071d4279SBram Moolenaar endif 57071d4279SBram Moolenaar " disallow use of nasm internal label format 58071d4279SBram Moolenaar syn match nasmLabelError "\<\$\=\.\.@\d\+\.\k*\>" 59071d4279SBram Moolenaarelse 60071d4279SBram Moolenaar syn match nasmSpecialLabel "\<\.\.@\(\h\|[?@]\)\k*\>" 61071d4279SBram Moolenaar syn match nasmSpecialLabel "\<\$\.\.@\(\h\|[?@]\)\k*\>"ms=s+1 62071d4279SBram Moolenaarendif 63071d4279SBram Moolenaar" Labels can be dereferenced with '$' to destinguish them from reserved words 64071d4279SBram Moolenaarsyn match nasmLabelError "\<\$\K\k*\s*:" 65071d4279SBram Moolenaarsyn match nasmLabelError "^\s*\$\K\k*\>" 66071d4279SBram Moolenaarsyn match nasmLabelError "\<\~\s*\(\k*\s*:\|\$\=\.\k*\)" 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar" Constants: 71690afe1fSBram Moolenaarsyn match nasmStringError +["'`]+ 72690afe1fSBram Moolenaar" NASM is case sensitive here: eg. u-prefix allows for 4-digit, U-prefix for 73690afe1fSBram Moolenaar" 8-digit Unicode characters 74690afe1fSBram Moolenaarsyn case match 75690afe1fSBram Moolenaar" one-char escape-sequences 76690afe1fSBram Moolenaarsyn match nasmCStringEscape display contained "\\[’"‘\\\?abtnvfre]" 77690afe1fSBram Moolenaar" hex and octal numbers 78690afe1fSBram Moolenaarsyn match nasmCStringEscape display contained "\\\(x\x\{2}\|\o\{1,3}\)" 79690afe1fSBram Moolenaar" Unicode characters 80690afe1fSBram Moolenaarsyn match nasmCStringEscape display contained "\\\(u\x\{4}\|U\x\{8}\)" 81690afe1fSBram Moolenaar" ISO C99 format strings (copied from cFormat in runtime/syntax/c.vim) 82690afe1fSBram Moolenaarsyn match nasmCStringFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained 83690afe1fSBram Moolenaarsyn match nasmCStringFormat display "%%" contained 84071d4279SBram Moolenaarsyn match nasmString +\("[^"]\{-}"\|'[^']\{-}'\)+ 85690afe1fSBram Moolenaar" Highlight C escape- and format-sequences within ``-strings 86690afe1fSBram Moolenaarsyn match nasmCString +\(`[^`]\{-}`\)+ contains=nasmCStringEscape,nasmCStringFormat extend 87690afe1fSBram Moolenaarsyn case ignore 88071d4279SBram Moolenaarsyn match nasmBinNumber "\<[0-1]\+b\>" 89071d4279SBram Moolenaarsyn match nasmBinNumber "\<\~[0-1]\+b\>"lc=1 90071d4279SBram Moolenaarsyn match nasmOctNumber "\<\o\+q\>" 91071d4279SBram Moolenaarsyn match nasmOctNumber "\<\~\o\+q\>"lc=1 92071d4279SBram Moolenaarsyn match nasmDecNumber "\<\d\+\>" 93071d4279SBram Moolenaarsyn match nasmDecNumber "\<\~\d\+\>"lc=1 94071d4279SBram Moolenaarsyn match nasmHexNumber "\<\(\d\x*h\|0x\x\+\|\$\d\x*\)\>" 95071d4279SBram Moolenaarsyn match nasmHexNumber "\<\~\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"lc=1 96071d4279SBram Moolenaarsyn match nasmFltNumber "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" 97071d4279SBram Moolenaarsyn keyword nasmFltNumber Inf Infinity Indefinite NaN SNaN QNaN 98071d4279SBram Moolenaarsyn match nasmNumberError "\<\~\s*\d\+\.\d*\(e[+-]\=\d\+\)\=\>" 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar 101071d4279SBram Moolenaar" Netwide Assembler Storage Directives: 102071d4279SBram Moolenaar" Storage types 103071d4279SBram Moolenaarsyn keyword nasmTypeError DF EXTRN FWORD RESF TBYTE 104071d4279SBram Moolenaarsyn keyword nasmType FAR NEAR SHORT 105071d4279SBram Moolenaarsyn keyword nasmType BYTE WORD DWORD QWORD DQWORD HWORD DHWORD TWORD 106071d4279SBram Moolenaarsyn keyword nasmType CDECL FASTCALL NONE PASCAL STDCALL 107071d4279SBram Moolenaarsyn keyword nasmStorage DB DW DD DQ DDQ DT 108071d4279SBram Moolenaarsyn keyword nasmStorage RESB RESW RESD RESQ RESDQ REST 109071d4279SBram Moolenaarsyn keyword nasmStorage EXTERN GLOBAL COMMON 110071d4279SBram Moolenaar" Structured storage types 111071d4279SBram Moolenaarsyn match nasmTypeError "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" 112071d4279SBram Moolenaarsyn match nasmStructureLabel contained "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" 113071d4279SBram Moolenaar" structures cannot be nested (yet) -> use: 'keepend' and 're=' 114071d4279SBram Moolenaarsyn cluster nasmGrpCntnStruc contains=ALLBUT,@nasmGrpInComments,nasmMacroDef,@nasmGrpInMacros,@nasmGrpInPreCondits,nasmStructureDef,@nasmGrpInStrucs 115071d4279SBram Moolenaarsyn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnStruc 116071d4279SBram Moolenaarsyn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnStruc 117071d4279SBram Moolenaarsyn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\<ISTRUCT\=\>" end="\<IEND\(STRUCT\=\)\=\>" contains=@nasmGrpCntnStruc,nasmInStructure 118071d4279SBram Moolenaar" union types are not part of nasm (yet) 119071d4279SBram Moolenaar"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnStruc 120071d4279SBram Moolenaar"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\<IUNION\>" end="\<IEND\(UNION\)\=\>" contains=@nasmGrpCntnStruc,nasmInStructure 121071d4279SBram Moolenaarsyn match nasmInStructure contained "^\s*AT\>"hs=e-1 122071d4279SBram Moolenaarsyn cluster nasmGrpInStrucs contains=nasmStructure,nasmInStructure,nasmStructureLabel 123071d4279SBram Moolenaar 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" PreProcessor Instructions: 127071d4279SBram Moolenaar" NAsm PreProcs start with %, but % is not a character 128071d4279SBram Moolenaarsyn match nasmPreProcError "%{\=\(%\=\k\+\|%%\+\k*\|[+-]\=\d\+\)}\=" 129071d4279SBram Moolenaarif exists("nasm_loose_syntax") 130071d4279SBram Moolenaar syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError 131071d4279SBram Moolenaarelse 132071d4279SBram Moolenaar syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLabelError,nasmPreProcError 133071d4279SBram Moolenaarendif 134071d4279SBram Moolenaar 135071d4279SBram Moolenaar" Multi-line macro 136071d4279SBram Moolenaarsyn cluster nasmGrpCntnMacro contains=ALLBUT,@nasmGrpInComments,nasmStructureDef,@nasmGrpInStrucs,nasmMacroDef,@nasmGrpPreCondits,nasmMemReference,nasmInMacPreCondit,nasmInMacStrucDef 137071d4279SBram Moolenaarsyn region nasmMacroDef matchgroup=nasmMacro keepend start="^\s*%macro\>"hs=e-5 start="^\s*%imacro\>"hs=e-6 end="^\s*%endmacro\>"re=e-9 contains=@nasmGrpCntnMacro,nasmInMacStrucDef 138071d4279SBram Moolenaarif exists("nasm_loose_syntax") 139071d4279SBram Moolenaar syn match nasmInMacLabel contained "%\(%\k\+\>\|{%\k\+}\)" 140071d4279SBram Moolenaar syn match nasmInMacLabel contained "%\($\+\(\w\|[#\.?@~]\)\k*\>\|{$\+\(\w\|[#\.?@~]\)\k*}\)" 141071d4279SBram Moolenaar syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=nasmStructureLabel,nasmLabel,nasmInMacParam,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError 142071d4279SBram Moolenaar if !exists("nasm_no_warn") 143071d4279SBram Moolenaar syn match nasmInMacLblWarn contained "%\(%[$\.]\k*\>\|{%[$\.]\k*}\)" 144071d4279SBram Moolenaar syn match nasmInMacLblWarn contained "%\($\+\(\d\|[#\.@~]\)\k*\|{\$\+\(\d\|[#\.@~]\)\k*}\)" 145071d4279SBram Moolenaar hi link nasmInMacCatLabel nasmInMacLblWarn 146071d4279SBram Moolenaar else 147071d4279SBram Moolenaar hi link nasmInMacCatLabel nasmInMacLabel 148071d4279SBram Moolenaar endif 149071d4279SBram Moolenaarelse 150071d4279SBram Moolenaar syn match nasmInMacLabel contained "%\(%\(\w\|[#?@~]\)\k*\>\|{%\(\w\|[#?@~]\)\k*}\)" 151071d4279SBram Moolenaar syn match nasmInMacLabel contained "%\($\+\(\h\|[?@]\)\k*\>\|{$\+\(\h\|[?@]\)\k*}\)" 152071d4279SBram Moolenaar hi link nasmInMacCatLabel nasmLabelError 153071d4279SBram Moolenaarendif 154071d4279SBram Moolenaarsyn match nasmInMacCatLabel contained "\d\K\k*"lc=1 155071d4279SBram Moolenaarsyn match nasmInMacLabel contained "\d}\k\+"lc=2 156071d4279SBram Moolenaarif !exists("nasm_no_warn") 157071d4279SBram Moolenaar syn match nasmInMacLblWarn contained "%\(\($\+\|%\)[_~][._~]*\>\|{\($\+\|%\)[_~][._~]*}\)" 158071d4279SBram Moolenaarendif 159071d4279SBram Moolenaarsyn match nasmInMacPreProc contained "^\s*%pop\>"hs=e-3 160071d4279SBram Moolenaarsyn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx 161071d4279SBram Moolenaar" structures cannot be nested (yet) -> use: 'keepend' and 're=' 162071d4279SBram Moolenaarsyn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnMacro 163071d4279SBram Moolenaarsyn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnMacro 164071d4279SBram Moolenaarsyn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\<ISTRUCT\=\>" end="\<IEND\(STRUCT\=\)\=\>" contains=@nasmGrpCntnMacro,nasmInStructure 165071d4279SBram Moolenaar" union types are not part of nasm (yet) 166071d4279SBram Moolenaar"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnMacro 167071d4279SBram Moolenaar"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\<IUNION\>" end="\<IEND\(UNION\)\=\>" contains=@nasmGrpCntnMacro,nasmInStructure 168071d4279SBram Moolenaarsyn region nasmInMacPreConDef contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit 1694a74803eSBram Moolenaar" Todo: allow STRUC/ISTRUC to be used inside preprocessor conditional block 170071d4279SBram Moolenaarsyn match nasmInMacPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx 171071d4279SBram Moolenaarsyn match nasmInMacPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx 172071d4279SBram Moolenaarsyn match nasmInMacPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx 173071d4279SBram Moolenaarsyn match nasmInMacParamNum contained "\<\d\+\.list\>"me=e-5 174071d4279SBram Moolenaarsyn match nasmInMacParamNum contained "\<\d\+\.nolist\>"me=e-7 175071d4279SBram Moolenaarsyn match nasmInMacDirective contained "\.\(no\)\=list\>" 176071d4279SBram Moolenaarsyn match nasmInMacMacro contained transparent "macro\s"lc=5 skipwhite nextgroup=nasmStructureLabel 177071d4279SBram Moolenaarsyn match nasmInMacMacro contained "^\s*%rotate\>"hs=e-6 178071d4279SBram Moolenaarsyn match nasmInMacParam contained "%\([+-]\=\d\+\|{[+-]\=\d\+}\)" 179071d4279SBram Moolenaar" nasm conditional macro operands/arguments 180071d4279SBram Moolenaar" Todo: check feasebility; add too nasmGrpInMacros, etc. 181071d4279SBram Moolenaar"syn match nasmInMacCond contained "\<\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" 182071d4279SBram Moolenaarsyn cluster nasmGrpInMacros contains=nasmMacro,nasmInMacMacro,nasmInMacParam,nasmInMacParamNum,nasmInMacDirective,nasmInMacLabel,nasmInMacLblWarn,nasmInMacMemRef,nasmInMacPreConDef,nasmInMacPreCondit,nasmInMacPreProc,nasmInMacStrucDef 183071d4279SBram Moolenaar 184071d4279SBram Moolenaar" Context pre-procs that are better used inside a macro 185071d4279SBram Moolenaarif exists("nasm_ctx_outside_macro") 186071d4279SBram Moolenaar syn region nasmPreConditDef transparent matchgroup=nasmCtxPreCondit start="^\s*%ifnctx\>"hs=e-6 start="^\s*%ifctx\>"hs=e-5 end="%endif\>" contains=@nasmGrpCntnPreCon 187071d4279SBram Moolenaar syn match nasmCtxPreProc "^\s*%pop\>"hs=e-3 188071d4279SBram Moolenaar if exists("nasm_loose_syntax") 1895dc6252dSBram Moolenaar syn match nasmCtxLocLabel "%$\+\(\w\|[#.?@~]\)\k*\>" 190071d4279SBram Moolenaar else 191071d4279SBram Moolenaar syn match nasmCtxLocLabel "%$\+\(\h\|[?@]\)\k*\>" 192071d4279SBram Moolenaar endif 193071d4279SBram Moolenaar syn match nasmCtxPreProc "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx 194071d4279SBram Moolenaar syn match nasmCtxPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx 195071d4279SBram Moolenaar syn match nasmCtxPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx 196071d4279SBram Moolenaar syn match nasmCtxPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx 197071d4279SBram Moolenaar if exists("nasm_no_warn") 198071d4279SBram Moolenaar hi link nasmCtxPreCondit nasmPreCondit 199071d4279SBram Moolenaar hi link nasmCtxPreProc nasmPreProc 200071d4279SBram Moolenaar hi link nasmCtxLocLabel nasmLocalLabel 201071d4279SBram Moolenaar else 202071d4279SBram Moolenaar hi link nasmCtxPreCondit nasmPreProcWarn 203071d4279SBram Moolenaar hi link nasmCtxPreProc nasmPreProcWarn 204071d4279SBram Moolenaar hi link nasmCtxLocLabel nasmLabelWarn 205071d4279SBram Moolenaar endif 206071d4279SBram Moolenaarendif 207071d4279SBram Moolenaar 208071d4279SBram Moolenaar" Conditional assembly 209071d4279SBram Moolenaarsyn cluster nasmGrpCntnPreCon contains=ALLBUT,@nasmGrpInComments,@nasmGrpInMacros,@nasmGrpInStrucs 210071d4279SBram Moolenaarsyn region nasmPreConditDef transparent matchgroup=nasmPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnPreCon 211071d4279SBram Moolenaarsyn match nasmInPreCondit contained "^\s*%el\(if\|se\)\>"hs=e-4 212071d4279SBram Moolenaarsyn match nasmInPreCondit contained "^\s*%elifid\>"hs=e-6 213071d4279SBram Moolenaarsyn match nasmInPreCondit contained "^\s*%elif\(def\|idn\|nid\|num\|str\)\>"hs=e-7 214071d4279SBram Moolenaarsyn match nasmInPreCondit contained "^\s*%elif\(n\(def\|idn\|num\|str\)\|idni\)\>"hs=e-8 215071d4279SBram Moolenaarsyn match nasmInPreCondit contained "^\s*%elifnidni\>"hs=e-9 216071d4279SBram Moolenaarsyn cluster nasmGrpInPreCondits contains=nasmPreCondit,nasmInPreCondit,nasmCtxPreCondit 217071d4279SBram Moolenaarsyn cluster nasmGrpPreCondits contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel 218071d4279SBram Moolenaar 219071d4279SBram Moolenaar" Other pre-processor statements 2204a74803eSBram Moolenaarsyn match nasmPreProc "^\s*%\(rep\|use\)\>"hs=e-3 221071d4279SBram Moolenaarsyn match nasmPreProc "^\s*%line\>"hs=e-4 2224a74803eSBram Moolenaarsyn match nasmPreProc "^\s*%\(clear\|error\|fatal\)\>"hs=e-5 2234a74803eSBram Moolenaarsyn match nasmPreProc "^\s*%\(endrep\|strlen\|substr\)\>"hs=e-6 2244a74803eSBram Moolenaarsyn match nasmPreProc "^\s*%\(exitrep\|warning\)\>"hs=e-7 225071d4279SBram Moolenaarsyn match nasmDefine "^\s*%undef\>"hs=e-5 226071d4279SBram Moolenaarsyn match nasmDefine "^\s*%\(assign\|define\)\>"hs=e-6 227071d4279SBram Moolenaarsyn match nasmDefine "^\s*%i\(assign\|define\)\>"hs=e-7 2284a74803eSBram Moolenaarsyn match nasmDefine "^\s*%unmacro\>"hs=e-7 229071d4279SBram Moolenaarsyn match nasmInclude "^\s*%include\>"hs=e-7 2304a74803eSBram Moolenaar" Todo: Treat the line tail after %fatal, %error, %warning as text 231071d4279SBram Moolenaar 232071d4279SBram Moolenaar" Multiple pre-processor instructions on single line detection (obsolete) 233071d4279SBram Moolenaar"syn match nasmPreProcError +^\s*\([^\t "%';][^"%';]*\|[^\t "';][^"%';]\+\)%\a\+\>+ 234071d4279SBram Moolenaarsyn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCondits,nasmPreProc,nasmDefine,nasmInclude,nasmPreProcWarn,nasmPreProcError 235071d4279SBram Moolenaar 236071d4279SBram Moolenaar 237071d4279SBram Moolenaar 238071d4279SBram Moolenaar" Register Identifiers: 239071d4279SBram Moolenaar" Register operands: 240071d4279SBram Moolenaarsyn match nasmGen08Register "\<[A-D][HL]\>" 241071d4279SBram Moolenaarsyn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>" 242071d4279SBram Moolenaarsyn match nasmGen32Register "\<E\([A-D]X\|[DS]I\|[BS]P\)\>" 243*130cbfc3SBram Moolenaarsyn match nasmGen64Register "\<R\([A-D]X\|[DS]I\|[BS]P\|[89]\|1[0-5]\|[89][WDB]\|1[0-5][WDB]\)\>" 244*130cbfc3SBram Moolenaarsyn match nasmExtRegister "\<\([SB]PL\|[SD]IL\)\>" 245071d4279SBram Moolenaarsyn match nasmSegRegister "\<[C-GS]S\>" 246071d4279SBram Moolenaarsyn match nasmSpcRegister "\<E\=IP\>" 247071d4279SBram Moolenaarsyn match nasmFpuRegister "\<ST\o\>" 248071d4279SBram Moolenaarsyn match nasmMmxRegister "\<MM\o\>" 249071d4279SBram Moolenaarsyn match nasmSseRegister "\<XMM\o\>" 250071d4279SBram Moolenaarsyn match nasmCtrlRegister "\<CR\o\>" 251071d4279SBram Moolenaarsyn match nasmDebugRegister "\<DR\o\>" 252071d4279SBram Moolenaarsyn match nasmTestRegister "\<TR\o\>" 253071d4279SBram Moolenaarsyn match nasmRegisterError "\<\(CR[15-9]\|DR[4-58-9]\|TR[0-28-9]\)\>" 254071d4279SBram Moolenaarsyn match nasmRegisterError "\<X\=MM[8-9]\>" 255071d4279SBram Moolenaarsyn match nasmRegisterError "\<ST\((\d)\|[8-9]\>\)" 256071d4279SBram Moolenaarsyn match nasmRegisterError "\<E\([A-D][HL]\|[C-GS]S\)\>" 257071d4279SBram Moolenaar" Memory reference operand (address): 2585dc6252dSBram Moolenaarsyn match nasmMemRefError "[[\]]" 259071d4279SBram Moolenaarsyn cluster nasmGrpCntnMemRef contains=ALLBUT,@nasmGrpComments,@nasmGrpPreProcs,@nasmGrpInStrucs,nasmMemReference,nasmMemRefError 2605dc6252dSBram Moolenaarsyn match nasmInMacMemRef contained "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmInMacLabel,nasmInMacLblWarn,nasmInMacParam 2615dc6252dSBram Moolenaarsyn match nasmMemReference "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmCtxLocLabel 262071d4279SBram Moolenaar 263071d4279SBram Moolenaar 264071d4279SBram Moolenaar 265071d4279SBram Moolenaar" Netwide Assembler Directives: 266071d4279SBram Moolenaar" Compilation constants 267071d4279SBram Moolenaarsyn keyword nasmConstant __BITS__ __DATE__ __FILE__ __FORMAT__ __LINE__ 268071d4279SBram Moolenaarsyn keyword nasmConstant __NASM_MAJOR__ __NASM_MINOR__ __NASM_VERSION__ 269071d4279SBram Moolenaarsyn keyword nasmConstant __TIME__ 270071d4279SBram Moolenaar" Instruction modifiers 271071d4279SBram Moolenaarsyn match nasmInstructnError "\<TO\>" 272071d4279SBram Moolenaarsyn match nasmInstrModifier "\(^\|:\)\s*[C-GS]S\>"ms=e-1 273071d4279SBram Moolenaarsyn keyword nasmInstrModifier A16 A32 O16 O32 274071d4279SBram Moolenaarsyn match nasmInstrModifier "\<F\(ADD\|MUL\|\(DIV\|SUB\)R\=\)\s\+TO\>"lc=5,ms=e-1 275071d4279SBram Moolenaar" the 'to' keyword is not allowed for fpu-pop instructions (yet) 276071d4279SBram Moolenaar"syn match nasmInstrModifier "\<F\(ADD\|MUL\|\(DIV\|SUB\)R\=\)P\s\+TO\>"lc=6,ms=e-1 277071d4279SBram Moolenaar" NAsm directives 278071d4279SBram Moolenaarsyn keyword nasmRepeat TIMES 279071d4279SBram Moolenaarsyn keyword nasmDirective ALIGN[B] INCBIN EQU NOSPLIT SPLIT 280071d4279SBram Moolenaarsyn keyword nasmDirective ABSOLUTE BITS SECTION SEGMENT 281071d4279SBram Moolenaarsyn keyword nasmDirective ENDSECTION ENDSEGMENT 282071d4279SBram Moolenaarsyn keyword nasmDirective __SECT__ 283071d4279SBram Moolenaar" Macro created standard directives: (requires %include) 284071d4279SBram Moolenaarsyn case match 285071d4279SBram Moolenaarsyn keyword nasmStdDirective ENDPROC EPILOGUE LOCALS PROC PROLOGUE USES 286071d4279SBram Moolenaarsyn keyword nasmStdDirective ENDIF ELSE ELIF ELSIF IF 287071d4279SBram Moolenaar"syn keyword nasmStdDirective BREAK CASE DEFAULT ENDSWITCH SWITCH 288071d4279SBram Moolenaar"syn keyword nasmStdDirective CASE OF ENDCASE 289071d4279SBram Moolenaarsyn keyword nasmStdDirective DO ENDFOR ENDWHILE FOR REPEAT UNTIL WHILE EXIT 290071d4279SBram Moolenaarsyn case ignore 291071d4279SBram Moolenaar" Format specific directives: (all formats) 292071d4279SBram Moolenaar" (excluded: extension directives to section, global, common and extern) 293071d4279SBram Moolenaarsyn keyword nasmFmtDirective ORG 294071d4279SBram Moolenaarsyn keyword nasmFmtDirective EXPORT IMPORT GROUP UPPERCASE SEG WRT 295071d4279SBram Moolenaarsyn keyword nasmFmtDirective LIBRARY 296071d4279SBram Moolenaarsyn case match 297071d4279SBram Moolenaarsyn keyword nasmFmtDirective _GLOBAL_OFFSET_TABLE_ __GLOBAL_OFFSET_TABLE_ 298071d4279SBram Moolenaarsyn keyword nasmFmtDirective ..start ..got ..gotoff ..gotpc ..plt ..sym 299071d4279SBram Moolenaarsyn case ignore 300071d4279SBram Moolenaar 301071d4279SBram Moolenaar 302071d4279SBram Moolenaar 303071d4279SBram Moolenaar" Standard Instructions: 304071d4279SBram Moolenaarsyn match nasmInstructnError "\<\(F\=CMOV\|SET\)N\=\a\{0,2}\>" 305071d4279SBram Moolenaarsyn keyword nasmInstructnError CMPS MOVS LCS LODS STOS XLAT 306071d4279SBram Moolenaarsyn match nasmStdInstruction "\<MOV\>" 307071d4279SBram Moolenaarsyn match nasmInstructnError "\<MOV\s[^,;[]*\<CS\>\s*[^:]"he=e-1 308071d4279SBram Moolenaarsyn match nasmStdInstruction "\<\(CMOV\|J\|SET\)\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" 309071d4279SBram Moolenaarsyn match nasmStdInstruction "\<POP\>" 310071d4279SBram Moolenaarsyn keyword nasmStdInstruction AAA AAD AAM AAS ADC ADD AND 311071d4279SBram Moolenaarsyn keyword nasmStdInstruction BOUND BSF BSR BSWAP BT[C] BTR BTS 3124a74803eSBram Moolenaarsyn keyword nasmStdInstruction CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW CMPSQ 3134a74803eSBram Moolenaarsyn keyword nasmStdInstruction CMPXCHG CMPXCHG8B CPUID CWD[E] CQO 314071d4279SBram Moolenaarsyn keyword nasmStdInstruction DAA DAS DEC DIV ENTER 3154a74803eSBram Moolenaarsyn keyword nasmStdInstruction IDIV IMUL INC INT[O] IRET[D] IRETW IRETQ 316071d4279SBram Moolenaarsyn keyword nasmStdInstruction JCXZ JECXZ JMP 3174a74803eSBram Moolenaarsyn keyword nasmStdInstruction LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD LODSQ 318071d4279SBram Moolenaarsyn keyword nasmStdInstruction LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS 3194a74803eSBram Moolenaarsyn keyword nasmStdInstruction MOVSB MOVSD MOVSW MOVSX MOVSQ MOVZX MUL NEG NOP NOT 3204a74803eSBram Moolenaarsyn keyword nasmStdInstruction OR POPA[D] POPAW POPF[D] POPFW POPFQ 3214a74803eSBram Moolenaarsyn keyword nasmStdInstruction PUSH[AD] PUSHAW PUSHF[D] PUSHFW PUSHFQ 322071d4279SBram Moolenaarsyn keyword nasmStdInstruction RCL RCR RETF RET[N] ROL ROR 323071d4279SBram Moolenaarsyn keyword nasmStdInstruction SAHF SAL SAR SBB SCASB SCASD SCASW 3244a74803eSBram Moolenaarsyn keyword nasmStdInstruction SHL[D] SHR[D] STC STD STOSB STOSD STOSW STOSQ SUB 325071d4279SBram Moolenaarsyn keyword nasmStdInstruction TEST XADD XCHG XLATB XOR 3264a74803eSBram Moolenaarsyn keyword nasmStdInstruction LFENCE MFENCE SFENCE 327071d4279SBram Moolenaar 328071d4279SBram Moolenaar 329071d4279SBram Moolenaar" System Instructions: (usually privileged) 330071d4279SBram Moolenaar" Verification of pointer parameters 331071d4279SBram Moolenaarsyn keyword nasmSysInstruction ARPL LAR LSL VERR VERW 332071d4279SBram Moolenaar" Addressing descriptor tables 333071d4279SBram Moolenaarsyn keyword nasmSysInstruction LLDT SLDT LGDT SGDT 334071d4279SBram Moolenaar" Multitasking 335071d4279SBram Moolenaarsyn keyword nasmSysInstruction LTR STR 336071d4279SBram Moolenaar" Coprocessing and Multiprocessing (requires fpu and multiple cpu's resp.) 337071d4279SBram Moolenaarsyn keyword nasmSysInstruction CLTS LOCK WAIT 338071d4279SBram Moolenaar" Input and Output 339071d4279SBram Moolenaarsyn keyword nasmInstructnError INS OUTS 340071d4279SBram Moolenaarsyn keyword nasmSysInstruction IN INSB INSW INSD OUT OUTSB OUTSB OUTSW OUTSD 341071d4279SBram Moolenaar" Interrupt control 342071d4279SBram Moolenaarsyn keyword nasmSysInstruction CLI STI LIDT SIDT 343071d4279SBram Moolenaar" System control 344071d4279SBram Moolenaarsyn match nasmSysInstruction "\<MOV\s[^;]\{-}\<CR\o\>"me=s+3 345071d4279SBram Moolenaarsyn keyword nasmSysInstruction HLT INVD LMSW 346071d4279SBram Moolenaarsyn keyword nasmSseInstruction PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA 347071d4279SBram Moolenaarsyn keyword nasmSseInstruction RSM SFENCE SMSW SYSENTER SYSEXIT UD2 WBINVD 348071d4279SBram Moolenaar" TLB (Translation Lookahead Buffer) testing 349071d4279SBram Moolenaarsyn match nasmSysInstruction "\<MOV\s[^;]\{-}\<TR\o\>"me=s+3 350071d4279SBram Moolenaarsyn keyword nasmSysInstruction INVLPG 351071d4279SBram Moolenaar 352071d4279SBram Moolenaar" Debugging Instructions: (privileged) 353071d4279SBram Moolenaarsyn match nasmDbgInstruction "\<MOV\s[^;]\{-}\<DR\o\>"me=s+3 354071d4279SBram Moolenaarsyn keyword nasmDbgInstruction INT1 INT3 RDMSR RDTSC RDPMC WRMSR 355071d4279SBram Moolenaar 356071d4279SBram Moolenaar 357071d4279SBram Moolenaar" Floating Point Instructions: (requires FPU) 358071d4279SBram Moolenaarsyn match nasmFpuInstruction "\<FCMOVN\=\([AB]E\=\|[CEPUZ]\)\>" 359071d4279SBram Moolenaarsyn keyword nasmFpuInstruction F2XM1 FABS FADD[P] FBLD FBSTP 360071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FCHS FCLEX FCOM[IP] FCOMP[P] FCOS 361071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FDECSTP FDISI FDIV[P] FDIVR[P] FENI FFREE 362071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FIADD FICOM[P] FIDIV[R] FILD 363071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FIMUL FINCSTP FINIT FIST[P] FISUB[R] 364071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FLD[1] FLDCW FLDENV FLDL2E FLDL2T FLDLG2 365071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FLDLN2 FLDPI FLDZ FMUL[P] 366071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE 367071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FNSTCW FNSTENV FNSTSW FNSTSW 368071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FPATAN FPREM[1] FPTAN FRNDINT FRSTOR 369071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FSAVE FSCALE FSETPM FSIN FSINCOS FSQRT 370071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FSTCW FSTENV FST[P] FSTSW FSUB[P] FSUBR[P] 371071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FTST FUCOM[IP] FUCOMP[P] 372071d4279SBram Moolenaarsyn keyword nasmFpuInstruction FXAM FXCH FXTRACT FYL2X FYL2XP1 373071d4279SBram Moolenaar 374071d4279SBram Moolenaar 375071d4279SBram Moolenaar" Multi Media Xtension Packed Instructions: (requires MMX unit) 376071d4279SBram Moolenaar" Standard MMX instructions: (requires MMX1 unit) 377071d4279SBram Moolenaarsyn match nasmInstructnError "\<P\(ADD\|SUB\)U\=S\=[DQ]\=\>" 378071d4279SBram Moolenaarsyn match nasmInstructnError "\<PCMP\a\{0,2}[BDWQ]\=\>" 379071d4279SBram Moolenaarsyn keyword nasmMmxInstruction EMMS MOVD MOVQ 380071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDW 381071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PADDSB PADDSW PADDUSB PADDUSW PAND[N] 382071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW 383071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PMACHRIW PMADDWD PMULHW PMULLW POR 384071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW 385071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PSUBB PSUBD PSUBW PSUBSB PSUBSW PSUBUSB PSUBUSW 386071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PUNPCKHBW PUNPCKHDQ PUNPCKHWD 387071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PUNPCKLBW PUNPCKLDQ PUNPCKLWD PXOR 388071d4279SBram Moolenaar" Extended MMX instructions: (requires MMX2/SSE unit) 389071d4279SBram Moolenaarsyn keyword nasmMmxInstruction MASKMOVQ MOVNTQ 390071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PAVGB PAVGW PEXTRW PINSRW PMAXSW PMAXUB 391071d4279SBram Moolenaarsyn keyword nasmMmxInstruction PMINSW PMINUB PMOVMSKB PMULHUW PSADBW PSHUFW 392071d4279SBram Moolenaar 393071d4279SBram Moolenaar 394071d4279SBram Moolenaar" Streaming SIMD Extension Packed Instructions: (requires SSE unit) 395071d4279SBram Moolenaarsyn match nasmInstructnError "\<CMP\a\{1,5}[PS]S\>" 396071d4279SBram Moolenaarsyn match nasmSseInstruction "\<CMP\(N\=\(EQ\|L[ET]\)\|\(UN\)\=ORD\)\=[PS]S\>" 397071d4279SBram Moolenaarsyn keyword nasmSseInstruction ADDPS ADDSS ANDNPS ANDPS 398071d4279SBram Moolenaarsyn keyword nasmSseInstruction COMISS CVTPI2PS CVTPS2PI 399071d4279SBram Moolenaarsyn keyword nasmSseInstruction CVTSI2SS CVTSS2SI CVTTPS2PI CVTTSS2SI 400071d4279SBram Moolenaarsyn keyword nasmSseInstruction DIVPS DIVSS FXRSTOR FXSAVE LDMXCSR 401071d4279SBram Moolenaarsyn keyword nasmSseInstruction MAXPS MAXSS MINPS MINSS MOVAPS MOVHLPS MOVHPS 402071d4279SBram Moolenaarsyn keyword nasmSseInstruction MOVLHPS MOVLPS MOVMSKPS MOVNTPS MOVSS MOVUPS 403071d4279SBram Moolenaarsyn keyword nasmSseInstruction MULPS MULSS 404071d4279SBram Moolenaarsyn keyword nasmSseInstruction ORPS RCPPS RCPSS RSQRTPS RSQRTSS 405071d4279SBram Moolenaarsyn keyword nasmSseInstruction SHUFPS SQRTPS SQRTSS STMXCSR SUBPS SUBSS 406071d4279SBram Moolenaarsyn keyword nasmSseInstruction UCOMISS UNPCKHPS UNPCKLPS XORPS 407071d4279SBram Moolenaar 408071d4279SBram Moolenaar 409071d4279SBram Moolenaar" Three Dimensional Now Packed Instructions: (requires 3DNow! unit) 410071d4279SBram Moolenaarsyn keyword nasmNowInstruction FEMMS PAVGUSB PF2ID PFACC PFADD PFCMPEQ PFCMPGE 411071d4279SBram Moolenaarsyn keyword nasmNowInstruction PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 412071d4279SBram Moolenaarsyn keyword nasmNowInstruction PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB[R] PI2FD 413071d4279SBram Moolenaarsyn keyword nasmNowInstruction PMULHRWA PREFETCH[W] 414071d4279SBram Moolenaar 415071d4279SBram Moolenaar 416071d4279SBram Moolenaar" Vendor Specific Instructions: 417071d4279SBram Moolenaar" Cyrix instructions (requires Cyrix processor) 418071d4279SBram Moolenaarsyn keyword nasmCrxInstruction PADDSIW PAVEB PDISTIB PMAGW PMULHRW[C] PMULHRIW 419071d4279SBram Moolenaarsyn keyword nasmCrxInstruction PMVGEZB PMVLZB PMVNZB PMVZB PSUBSIW 420071d4279SBram Moolenaarsyn keyword nasmCrxInstruction RDSHR RSDC RSLDT SMINT SMINTOLD SVDC SVLDT SVTS 421071d4279SBram Moolenaarsyn keyword nasmCrxInstruction WRSHR 422071d4279SBram Moolenaar" AMD instructions (requires AMD processor) 423071d4279SBram Moolenaarsyn keyword nasmAmdInstruction SYSCALL SYSRET 424071d4279SBram Moolenaar 425071d4279SBram Moolenaar 426071d4279SBram Moolenaar" Undocumented Instructions: 427071d4279SBram Moolenaarsyn match nasmUndInstruction "\<POP\s[^;]*\<CS\>"me=s+3 428071d4279SBram Moolenaarsyn keyword nasmUndInstruction CMPXCHG486 IBTS ICEBP INT01 INT03 LOADALL 429071d4279SBram Moolenaarsyn keyword nasmUndInstruction LOADALL286 LOADALL386 SALC SMI UD1 UMOV XBTS 430071d4279SBram Moolenaar 431071d4279SBram Moolenaar 432071d4279SBram Moolenaar 433071d4279SBram Moolenaar" Synchronize Syntax: 434071d4279SBram Moolenaarsyn sync clear 435071d4279SBram Moolenaarsyn sync minlines=50 "for multiple region nesting 436071d4279SBram Moolenaarsyn sync match nasmSync grouphere nasmMacroDef "^\s*%i\=macro\>"me=s-1 437071d4279SBram Moolenaarsyn sync match nasmSync grouphere NONE "^\s*%endmacro\>" 438071d4279SBram Moolenaar 439071d4279SBram Moolenaar 440071d4279SBram Moolenaar" Define the default highlighting. 44189bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 442071d4279SBram Moolenaar 443071d4279SBram Moolenaar" Sub Links: 444f37506f6SBram Moolenaarhi def link nasmInMacDirective nasmDirective 445f37506f6SBram Moolenaarhi def link nasmInMacLabel nasmLocalLabel 446f37506f6SBram Moolenaarhi def link nasmInMacLblWarn nasmLabelWarn 447f37506f6SBram Moolenaarhi def link nasmInMacMacro nasmMacro 448f37506f6SBram Moolenaarhi def link nasmInMacParam nasmMacro 449f37506f6SBram Moolenaarhi def link nasmInMacParamNum nasmDecNumber 450f37506f6SBram Moolenaarhi def link nasmInMacPreCondit nasmPreCondit 451f37506f6SBram Moolenaarhi def link nasmInMacPreProc nasmPreProc 452f37506f6SBram Moolenaarhi def link nasmInPreCondit nasmPreCondit 453f37506f6SBram Moolenaarhi def link nasmInStructure nasmStructure 454f37506f6SBram Moolenaarhi def link nasmStructureLabel nasmStructure 455071d4279SBram Moolenaar 456071d4279SBram Moolenaar" Comment Group: 457f37506f6SBram Moolenaarhi def link nasmComment Comment 458f37506f6SBram Moolenaarhi def link nasmSpecialComment SpecialComment 459f37506f6SBram Moolenaarhi def link nasmInCommentTodo Todo 460071d4279SBram Moolenaar 461071d4279SBram Moolenaar" Constant Group: 462f37506f6SBram Moolenaarhi def link nasmString String 463690afe1fSBram Moolenaarhi def link nasmCString String 464f37506f6SBram Moolenaarhi def link nasmStringError Error 465690afe1fSBram Moolenaarhi def link nasmCStringEscape SpecialChar 466690afe1fSBram Moolenaarhi def link nasmCStringFormat SpecialChar 467f37506f6SBram Moolenaarhi def link nasmBinNumber Number 468f37506f6SBram Moolenaarhi def link nasmOctNumber Number 469f37506f6SBram Moolenaarhi def link nasmDecNumber Number 470f37506f6SBram Moolenaarhi def link nasmHexNumber Number 471f37506f6SBram Moolenaarhi def link nasmFltNumber Float 472f37506f6SBram Moolenaarhi def link nasmNumberError Error 473071d4279SBram Moolenaar 474071d4279SBram Moolenaar" Identifier Group: 475f37506f6SBram Moolenaarhi def link nasmLabel Identifier 476f37506f6SBram Moolenaarhi def link nasmLocalLabel Identifier 477f37506f6SBram Moolenaarhi def link nasmSpecialLabel Special 478f37506f6SBram Moolenaarhi def link nasmLabelError Error 479f37506f6SBram Moolenaarhi def link nasmLabelWarn Todo 480071d4279SBram Moolenaar 481071d4279SBram Moolenaar" PreProc Group: 482f37506f6SBram Moolenaarhi def link nasmPreProc PreProc 483f37506f6SBram Moolenaarhi def link nasmDefine Define 484f37506f6SBram Moolenaarhi def link nasmInclude Include 485f37506f6SBram Moolenaarhi def link nasmMacro Macro 486f37506f6SBram Moolenaarhi def link nasmPreCondit PreCondit 487f37506f6SBram Moolenaarhi def link nasmPreProcError Error 488f37506f6SBram Moolenaarhi def link nasmPreProcWarn Todo 489071d4279SBram Moolenaar 490071d4279SBram Moolenaar" Type Group: 491f37506f6SBram Moolenaarhi def link nasmType Type 492f37506f6SBram Moolenaarhi def link nasmStorage StorageClass 493f37506f6SBram Moolenaarhi def link nasmStructure Structure 494f37506f6SBram Moolenaarhi def link nasmTypeError Error 495071d4279SBram Moolenaar 496071d4279SBram Moolenaar" Directive Group: 497f37506f6SBram Moolenaarhi def link nasmConstant Constant 498f37506f6SBram Moolenaarhi def link nasmInstrModifier Operator 499f37506f6SBram Moolenaarhi def link nasmRepeat Repeat 500f37506f6SBram Moolenaarhi def link nasmDirective Keyword 501f37506f6SBram Moolenaarhi def link nasmStdDirective Operator 502f37506f6SBram Moolenaarhi def link nasmFmtDirective Keyword 503071d4279SBram Moolenaar 504071d4279SBram Moolenaar" Register Group: 505f37506f6SBram Moolenaarhi def link nasmCtrlRegister Special 506f37506f6SBram Moolenaarhi def link nasmDebugRegister Debug 507f37506f6SBram Moolenaarhi def link nasmTestRegister Special 508f37506f6SBram Moolenaarhi def link nasmRegisterError Error 509f37506f6SBram Moolenaarhi def link nasmMemRefError Error 510071d4279SBram Moolenaar 511071d4279SBram Moolenaar" Instruction Group: 512f37506f6SBram Moolenaarhi def link nasmStdInstruction Statement 513f37506f6SBram Moolenaarhi def link nasmSysInstruction Statement 514f37506f6SBram Moolenaarhi def link nasmDbgInstruction Debug 515f37506f6SBram Moolenaarhi def link nasmFpuInstruction Statement 516f37506f6SBram Moolenaarhi def link nasmMmxInstruction Statement 517f37506f6SBram Moolenaarhi def link nasmSseInstruction Statement 518f37506f6SBram Moolenaarhi def link nasmNowInstruction Statement 519f37506f6SBram Moolenaarhi def link nasmAmdInstruction Special 520f37506f6SBram Moolenaarhi def link nasmCrxInstruction Special 521f37506f6SBram Moolenaarhi def link nasmUndInstruction Todo 522f37506f6SBram Moolenaarhi def link nasmInstructnError Error 523071d4279SBram Moolenaar 524071d4279SBram Moolenaar 525071d4279SBram Moolenaarlet b:current_syntax = "nasm" 526071d4279SBram Moolenaar 527071d4279SBram Moolenaar" vim:ts=8 sw=4 528