1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: (VAX) Macro Assembly 3071d4279SBram Moolenaar" Maintainer: Tom Uijldert <tom.uijldert [at] cmg.nl> 4071d4279SBram Moolenaar" Last change: 2004 May 16 5071d4279SBram Moolenaar" 6071d4279SBram Moolenaar" This is incomplete. Feel free to contribute... 7071d4279SBram Moolenaar" 8071d4279SBram Moolenaar 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1089bcfda6SBram Moolenaarif exists("b:current_syntax") 11071d4279SBram Moolenaar finish 12071d4279SBram Moolenaarendif 13071d4279SBram Moolenaar 14071d4279SBram Moolenaarsyn case ignore 15071d4279SBram Moolenaar 16071d4279SBram Moolenaar" Partial list of register symbols 17071d4279SBram Moolenaarsyn keyword vmasmReg r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 18071d4279SBram Moolenaarsyn keyword vmasmReg ap fp sp pc iv dv 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" All matches - order is important! 21071d4279SBram Moolenaarsyn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl 22071d4279SBram Moolenaarsyn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml 23071d4279SBram Moolenaarsyn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc 24071d4279SBram Moolenaarsyn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5 25071d4279SBram Moolenaarsyn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv 26071d4279SBram Moolenaarsyn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi 27071d4279SBram Moolenaarsyn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel 28071d4279SBram Moolenaarsyn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret 29071d4279SBram Moolenaarsyn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc 30071d4279SBram Moolenaarsyn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque 31071d4279SBram Moolenaarsyn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt 32071d4279SBram Moolenaarsyn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc 33071d4279SBram Moolenaarsyn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl 34071d4279SBram Moolenaarsyn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq 35071d4279SBram Moolenaarsyn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync 36071d4279SBram Moolenaarsyn keyword vmasmOpcode beql[u] bgtr[u] blss[u] 37071d4279SBram Moolenaarsyn match vmasmOpcode "\<add[bwlfdgh][23]\>" 38071d4279SBram Moolenaarsyn match vmasmOpcode "\<bi[cs][bwl][23]\>" 39071d4279SBram Moolenaarsyn match vmasmOpcode "\<clr[bwlqofdgh]\>" 40071d4279SBram Moolenaarsyn match vmasmOpcode "\<cmp[bwlfdgh]\>" 41071d4279SBram Moolenaarsyn match vmasmOpcode "\<cvt[bwlfdgh][bwlfdgh]\>" 42071d4279SBram Moolenaarsyn match vmasmOpcode "\<cvtr[fdgh]l\>" 43071d4279SBram Moolenaarsyn match vmasmOpcode "\<div[bwlfdgh][23]\>" 44071d4279SBram Moolenaarsyn match vmasmOpcode "\<emod[fdgh]\>" 45071d4279SBram Moolenaarsyn match vmasmOpcode "\<mneg[bwlfdgh]\>" 46071d4279SBram Moolenaarsyn match vmasmOpcode "\<mov[bwlqofdgh]\>" 47071d4279SBram Moolenaarsyn match vmasmOpcode "\<mul[bwlfdgh][23]\>" 48071d4279SBram Moolenaarsyn match vmasmOpcode "\<poly[fdgh]\>" 49071d4279SBram Moolenaarsyn match vmasmOpcode "\<sub[bwlfdgh][23]\>" 50071d4279SBram Moolenaarsyn match vmasmOpcode "\<tst[bwlfdgh]\>" 51071d4279SBram Moolenaarsyn match vmasmOpcode "\<xor[bwl][23]\>" 52071d4279SBram Moolenaarsyn match vmasmOpcode "\<mova[bwlfqdgho]\>" 53071d4279SBram Moolenaarsyn match vmasmOpcode "\<push[bwlfqdgho]\>" 54071d4279SBram Moolenaarsyn match vmasmOpcode "\<acb[bwlfgdh]\>" 55071d4279SBram Moolenaarsyn match vmasmOpcode "\<b[lng]equ\=\>" 56071d4279SBram Moolenaarsyn match vmasmOpcode "\<b[cv][cs]\>" 57071d4279SBram Moolenaarsyn match vmasmOpcode "\<bb[cs][cs]\>" 58071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]add[lfdg]\>" 59071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]cmp[lfdg]\>" 60071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]div[fdg]\>" 61071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]mul[lfdg]\>" 62071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]sub[lfdg]\>" 63071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]bi[cs]l\>" 64071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]xorl\>" 65071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]merge\>" 66071d4279SBram Moolenaarsyn match vmasmOpcode "\<v[vs]s[rl]ll\>" 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar" Various number formats 69071d4279SBram Moolenaarsyn match vmasmdecNumber "[+-]\=[0-9]\+\>" 70071d4279SBram Moolenaarsyn match vmasmdecNumber "^d[0-9]\+\>" 71071d4279SBram Moolenaarsyn match vmasmhexNumber "^x[0-9a-f]\+\>" 72071d4279SBram Moolenaarsyn match vmasmoctNumber "^o[0-7]\+\>" 73071d4279SBram Moolenaarsyn match vmasmbinNumber "^b[01]\+\>" 74071d4279SBram Moolenaarsyn match vmasmfloatNumber "[-+]\=[0-9]\+E[-+]\=[0-9]\+" 75071d4279SBram Moolenaarsyn match vmasmfloatNumber "[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\=" 76071d4279SBram Moolenaar 77071d4279SBram Moolenaar" Valid labels 78071d4279SBram Moolenaarsyn match vmasmLabel "^[a-z_$.][a-z0-9_$.]\{,30}::\=" 79071d4279SBram Moolenaarsyn match vmasmLabel "\<[0-9]\{1,5}\$:\=" " Local label 80071d4279SBram Moolenaar 81071d4279SBram Moolenaar" Character string constants 82071d4279SBram Moolenaar" Too complex really. Could be "<...>" but those could also be 83071d4279SBram Moolenaar" expressions. Don't know how to handle chosen delimiters 84071d4279SBram Moolenaar" ("^<sep>...<sep>") 85071d4279SBram Moolenaar" syn region vmasmString start="<" end=">" oneline 86071d4279SBram Moolenaar 87071d4279SBram Moolenaar" Operators 88071d4279SBram Moolenaarsyn match vmasmOperator "[-+*/@&!\\]" 89071d4279SBram Moolenaarsyn match vmasmOperator "=" 90071d4279SBram Moolenaarsyn match vmasmOperator "==" " Global assignment 91071d4279SBram Moolenaarsyn match vmasmOperator "%length(.*)" 92071d4279SBram Moolenaarsyn match vmasmOperator "%locate(.*)" 93071d4279SBram Moolenaarsyn match vmasmOperator "%extract(.*)" 94071d4279SBram Moolenaarsyn match vmasmOperator "^[amfc]" 95071d4279SBram Moolenaarsyn match vmasmOperator "[bwlg]^" 96071d4279SBram Moolenaar 97071d4279SBram Moolenaarsyn match vmasmOperator "\<\(not_\)\=equal\>" 98071d4279SBram Moolenaarsyn match vmasmOperator "\<less_equal\>" 99071d4279SBram Moolenaarsyn match vmasmOperator "\<greater\(_equal\)\=\>" 100071d4279SBram Moolenaarsyn match vmasmOperator "\<less_than\>" 101071d4279SBram Moolenaarsyn match vmasmOperator "\<\(not_\)\=defined\>" 102071d4279SBram Moolenaarsyn match vmasmOperator "\<\(not_\)\=blank\>" 103071d4279SBram Moolenaarsyn match vmasmOperator "\<identical\>" 104071d4279SBram Moolenaarsyn match vmasmOperator "\<different\>" 105071d4279SBram Moolenaarsyn match vmasmOperator "\<eq\>" 106071d4279SBram Moolenaarsyn match vmasmOperator "\<[gl]t\>" 107071d4279SBram Moolenaarsyn match vmasmOperator "\<n\=df\>" 108071d4279SBram Moolenaarsyn match vmasmOperator "\<n\=b\>" 109071d4279SBram Moolenaarsyn match vmasmOperator "\<idn\>" 110071d4279SBram Moolenaarsyn match vmasmOperator "\<[nlg]e\>" 111071d4279SBram Moolenaarsyn match vmasmOperator "\<dif\>" 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" Special items for comments 114071d4279SBram Moolenaarsyn keyword vmasmTodo contained todo 115071d4279SBram Moolenaar 116071d4279SBram Moolenaar" Comments 117071d4279SBram Moolenaarsyn match vmasmComment ";.*" contains=vmasmTodo 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar" Include 120071d4279SBram Moolenaarsyn match vmasmInclude "\.library\>" 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar" Macro definition 123071d4279SBram Moolenaarsyn match vmasmMacro "\.macro\>" 124071d4279SBram Moolenaarsyn match vmasmMacro "\.mexit\>" 125071d4279SBram Moolenaarsyn match vmasmMacro "\.endm\>" 126071d4279SBram Moolenaarsyn match vmasmMacro "\.mcall\>" 127071d4279SBram Moolenaarsyn match vmasmMacro "\.mdelete\>" 128071d4279SBram Moolenaar 129071d4279SBram Moolenaar" Conditional assembly 130071d4279SBram Moolenaarsyn match vmasmPreCond "\.iff\=\>" 131071d4279SBram Moolenaarsyn match vmasmPreCond "\.if_false\>" 132071d4279SBram Moolenaarsyn match vmasmPreCond "\.iftf\=\>" 133071d4279SBram Moolenaarsyn match vmasmPreCond "\.if_true\(_false\)\=\>" 134071d4279SBram Moolenaarsyn match vmasmPreCond "\.iif\>" 135071d4279SBram Moolenaar 136071d4279SBram Moolenaar" Loop control 137071d4279SBram Moolenaarsyn match vmasmRepeat "\.irpc\=\>" 138071d4279SBram Moolenaarsyn match vmasmRepeat "\.repeat\>" 139071d4279SBram Moolenaarsyn match vmasmRepeat "\.rept\>" 140071d4279SBram Moolenaarsyn match vmasmRepeat "\.endr\>" 141071d4279SBram Moolenaar 142071d4279SBram Moolenaar" Directives 143071d4279SBram Moolenaarsyn match vmasmDirective "\.address\>" 144071d4279SBram Moolenaarsyn match vmasmDirective "\.align\>" 145071d4279SBram Moolenaarsyn match vmasmDirective "\.asci[cdiz]\>" 146071d4279SBram Moolenaarsyn match vmasmDirective "\.blk[abdfghloqw]\>" 147071d4279SBram Moolenaarsyn match vmasmDirective "\.\(signed_\)\=byte\>" 148071d4279SBram Moolenaarsyn match vmasmDirective "\.\(no\)\=cross\>" 149071d4279SBram Moolenaarsyn match vmasmDirective "\.debug\>" 150071d4279SBram Moolenaarsyn match vmasmDirective "\.default displacement\>" 151071d4279SBram Moolenaarsyn match vmasmDirective "\.[dfgh]_floating\>" 152071d4279SBram Moolenaarsyn match vmasmDirective "\.disable\>" 153071d4279SBram Moolenaarsyn match vmasmDirective "\.double\>" 154071d4279SBram Moolenaarsyn match vmasmDirective "\.dsabl\>" 155071d4279SBram Moolenaarsyn match vmasmDirective "\.enable\=\>" 156071d4279SBram Moolenaarsyn match vmasmDirective "\.endc\=\>" 157071d4279SBram Moolenaarsyn match vmasmDirective "\.entry\>" 158071d4279SBram Moolenaarsyn match vmasmDirective "\.error\>" 159071d4279SBram Moolenaarsyn match vmasmDirective "\.even\>" 160071d4279SBram Moolenaarsyn match vmasmDirective "\.external\>" 161071d4279SBram Moolenaarsyn match vmasmDirective "\.extrn\>" 162071d4279SBram Moolenaarsyn match vmasmDirective "\.float\>" 163071d4279SBram Moolenaarsyn match vmasmDirective "\.globa\=l\>" 164071d4279SBram Moolenaarsyn match vmasmDirective "\.ident\>" 165071d4279SBram Moolenaarsyn match vmasmDirective "\.link\>" 166071d4279SBram Moolenaarsyn match vmasmDirective "\.list\>" 167071d4279SBram Moolenaarsyn match vmasmDirective "\.long\>" 168071d4279SBram Moolenaarsyn match vmasmDirective "\.mask\>" 169071d4279SBram Moolenaarsyn match vmasmDirective "\.narg\>" 170071d4279SBram Moolenaarsyn match vmasmDirective "\.nchr\>" 171071d4279SBram Moolenaarsyn match vmasmDirective "\.nlist\>" 172071d4279SBram Moolenaarsyn match vmasmDirective "\.ntype\>" 173071d4279SBram Moolenaarsyn match vmasmDirective "\.octa\>" 174071d4279SBram Moolenaarsyn match vmasmDirective "\.odd\>" 175071d4279SBram Moolenaarsyn match vmasmDirective "\.opdef\>" 176071d4279SBram Moolenaarsyn match vmasmDirective "\.packed\>" 177071d4279SBram Moolenaarsyn match vmasmDirective "\.page\>" 178071d4279SBram Moolenaarsyn match vmasmDirective "\.print\>" 179071d4279SBram Moolenaarsyn match vmasmDirective "\.psect\>" 180071d4279SBram Moolenaarsyn match vmasmDirective "\.quad\>" 181071d4279SBram Moolenaarsyn match vmasmDirective "\.ref[1248]\>" 182071d4279SBram Moolenaarsyn match vmasmDirective "\.ref16\>" 183071d4279SBram Moolenaarsyn match vmasmDirective "\.restore\(_psect\)\=\>" 184071d4279SBram Moolenaarsyn match vmasmDirective "\.save\(_psect\)\=\>" 185071d4279SBram Moolenaarsyn match vmasmDirective "\.sbttl\>" 186071d4279SBram Moolenaarsyn match vmasmDirective "\.\(no\)\=show\>" 187071d4279SBram Moolenaarsyn match vmasmDirective "\.\(sub\)\=title\>" 188071d4279SBram Moolenaarsyn match vmasmDirective "\.transfer\>" 189071d4279SBram Moolenaarsyn match vmasmDirective "\.warn\>" 190071d4279SBram Moolenaarsyn match vmasmDirective "\.weak\>" 191071d4279SBram Moolenaarsyn match vmasmDirective "\.\(signed_\)\=word\>" 192071d4279SBram Moolenaar 193071d4279SBram Moolenaarsyn case match 194071d4279SBram Moolenaar 195071d4279SBram Moolenaar" Define the default highlighting. 19689bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 197071d4279SBram Moolenaar 198071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 199071d4279SBram Moolenaar" Comment Constant Error Identifier PreProc Special Statement Todo Type 200071d4279SBram Moolenaar" 201071d4279SBram Moolenaar" Constant Boolean Character Number String 202071d4279SBram Moolenaar" Identifier Function 203071d4279SBram Moolenaar" PreProc Define Include Macro PreCondit 204071d4279SBram Moolenaar" Special Debug Delimiter SpecialChar SpecialComment Tag 205071d4279SBram Moolenaar" Statement Conditional Exception Keyword Label Operator Repeat 206071d4279SBram Moolenaar" Type StorageClass Structure Typedef 207071d4279SBram Moolenaar 208*f37506f6SBram Moolenaarhi def link vmasmComment Comment 209*f37506f6SBram Moolenaarhi def link vmasmTodo Todo 210071d4279SBram Moolenaar 211*f37506f6SBram Moolenaarhi def link vmasmhexNumber Number " Constant 212*f37506f6SBram Moolenaarhi def link vmasmoctNumber Number " Constant 213*f37506f6SBram Moolenaarhi def link vmasmbinNumber Number " Constant 214*f37506f6SBram Moolenaarhi def link vmasmdecNumber Number " Constant 215*f37506f6SBram Moolenaarhi def link vmasmfloatNumber Number " Constant 216071d4279SBram Moolenaar 217*f37506f6SBram Moolenaar" hi def link vmasmString String " Constant 218071d4279SBram Moolenaar 219*f37506f6SBram Moolenaarhi def link vmasmReg Identifier 220*f37506f6SBram Moolenaarhi def link vmasmOperator Identifier 221071d4279SBram Moolenaar 222*f37506f6SBram Moolenaarhi def link vmasmInclude Include " PreProc 223*f37506f6SBram Moolenaarhi def link vmasmMacro Macro " PreProc 224*f37506f6SBram Moolenaar" hi def link vmasmMacroParam Keyword " Statement 225071d4279SBram Moolenaar 226*f37506f6SBram Moolenaarhi def link vmasmDirective Special 227*f37506f6SBram Moolenaarhi def link vmasmPreCond Special 228071d4279SBram Moolenaar 229071d4279SBram Moolenaar 230*f37506f6SBram Moolenaarhi def link vmasmOpcode Statement 231*f37506f6SBram Moolenaarhi def link vmasmCond Conditional " Statement 232*f37506f6SBram Moolenaarhi def link vmasmRepeat Repeat " Statement 233071d4279SBram Moolenaar 234*f37506f6SBram Moolenaarhi def link vmasmLabel Type 235071d4279SBram Moolenaar 236071d4279SBram Moolenaarlet b:current_syntax = "vmasm" 237071d4279SBram Moolenaar 238071d4279SBram Moolenaar" vim: ts=8 sw=2 239