diff options
Diffstat (limited to 'runtime/syntax/vmasm.vim')
-rw-r--r-- | runtime/syntax/vmasm.vim | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/runtime/syntax/vmasm.vim b/runtime/syntax/vmasm.vim new file mode 100644 index 000000000..85d044125 --- /dev/null +++ b/runtime/syntax/vmasm.vim @@ -0,0 +1,251 @@ +" Vim syntax file +" Language: (VAX) Macro Assembly +" Maintainer: Tom Uijldert <tom.uijldert [at] cmg.nl> +" Last change: 2004 May 16 +" +" This is incomplete. Feel free to contribute... +" + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" Partial list of register symbols +syn keyword vmasmReg r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 +syn keyword vmasmReg ap fp sp pc iv dv + +" All matches - order is important! +syn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl +syn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml +syn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc +syn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5 +syn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv +syn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi +syn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel +syn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret +syn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc +syn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque +syn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt +syn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc +syn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl +syn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq +syn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync +syn keyword vmasmOpcode beql[u] bgtr[u] blss[u] +syn match vmasmOpcode "\<add[bwlfdgh][23]\>" +syn match vmasmOpcode "\<bi[cs][bwl][23]\>" +syn match vmasmOpcode "\<clr[bwlqofdgh]\>" +syn match vmasmOpcode "\<cmp[bwlfdgh]\>" +syn match vmasmOpcode "\<cvt[bwlfdgh][bwlfdgh]\>" +syn match vmasmOpcode "\<cvtr[fdgh]l\>" +syn match vmasmOpcode "\<div[bwlfdgh][23]\>" +syn match vmasmOpcode "\<emod[fdgh]\>" +syn match vmasmOpcode "\<mneg[bwlfdgh]\>" +syn match vmasmOpcode "\<mov[bwlqofdgh]\>" +syn match vmasmOpcode "\<mul[bwlfdgh][23]\>" +syn match vmasmOpcode "\<poly[fdgh]\>" +syn match vmasmOpcode "\<sub[bwlfdgh][23]\>" +syn match vmasmOpcode "\<tst[bwlfdgh]\>" +syn match vmasmOpcode "\<xor[bwl][23]\>" +syn match vmasmOpcode "\<mova[bwlfqdgho]\>" +syn match vmasmOpcode "\<push[bwlfqdgho]\>" +syn match vmasmOpcode "\<acb[bwlfgdh]\>" +syn match vmasmOpcode "\<b[lng]equ\=\>" +syn match vmasmOpcode "\<b[cv][cs]\>" +syn match vmasmOpcode "\<bb[cs][cs]\>" +syn match vmasmOpcode "\<v[vs]add[lfdg]\>" +syn match vmasmOpcode "\<v[vs]cmp[lfdg]\>" +syn match vmasmOpcode "\<v[vs]div[fdg]\>" +syn match vmasmOpcode "\<v[vs]mul[lfdg]\>" +syn match vmasmOpcode "\<v[vs]sub[lfdg]\>" +syn match vmasmOpcode "\<v[vs]bi[cs]l\>" +syn match vmasmOpcode "\<v[vs]xorl\>" +syn match vmasmOpcode "\<v[vs]merge\>" +syn match vmasmOpcode "\<v[vs]s[rl]ll\>" + +" Various number formats +syn match vmasmdecNumber "[+-]\=[0-9]\+\>" +syn match vmasmdecNumber "^d[0-9]\+\>" +syn match vmasmhexNumber "^x[0-9a-f]\+\>" +syn match vmasmoctNumber "^o[0-7]\+\>" +syn match vmasmbinNumber "^b[01]\+\>" +syn match vmasmfloatNumber "[-+]\=[0-9]\+E[-+]\=[0-9]\+" +syn match vmasmfloatNumber "[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\=" + +" Valid labels +syn match vmasmLabel "^[a-z_$.][a-z0-9_$.]\{,30}::\=" +syn match vmasmLabel "\<[0-9]\{1,5}\$:\=" " Local label + +" Character string constants +" Too complex really. Could be "<...>" but those could also be +" expressions. Don't know how to handle chosen delimiters +" ("^<sep>...<sep>") +" syn region vmasmString start="<" end=">" oneline + +" Operators +syn match vmasmOperator "[-+*/@&!\\]" +syn match vmasmOperator "=" +syn match vmasmOperator "==" " Global assignment +syn match vmasmOperator "%length(.*)" +syn match vmasmOperator "%locate(.*)" +syn match vmasmOperator "%extract(.*)" +syn match vmasmOperator "^[amfc]" +syn match vmasmOperator "[bwlg]^" + +syn match vmasmOperator "\<\(not_\)\=equal\>" +syn match vmasmOperator "\<less_equal\>" +syn match vmasmOperator "\<greater\(_equal\)\=\>" +syn match vmasmOperator "\<less_than\>" +syn match vmasmOperator "\<\(not_\)\=defined\>" +syn match vmasmOperator "\<\(not_\)\=blank\>" +syn match vmasmOperator "\<identical\>" +syn match vmasmOperator "\<different\>" +syn match vmasmOperator "\<eq\>" +syn match vmasmOperator "\<[gl]t\>" +syn match vmasmOperator "\<n\=df\>" +syn match vmasmOperator "\<n\=b\>" +syn match vmasmOperator "\<idn\>" +syn match vmasmOperator "\<[nlg]e\>" +syn match vmasmOperator "\<dif\>" + +" Special items for comments +syn keyword vmasmTodo contained todo + +" Comments +syn match vmasmComment ";.*" contains=vmasmTodo + +" Include +syn match vmasmInclude "\.library\>" + +" Macro definition +syn match vmasmMacro "\.macro\>" +syn match vmasmMacro "\.mexit\>" +syn match vmasmMacro "\.endm\>" +syn match vmasmMacro "\.mcall\>" +syn match vmasmMacro "\.mdelete\>" + +" Conditional assembly +syn match vmasmPreCond "\.iff\=\>" +syn match vmasmPreCond "\.if_false\>" +syn match vmasmPreCond "\.iftf\=\>" +syn match vmasmPreCond "\.if_true\(_false\)\=\>" +syn match vmasmPreCond "\.iif\>" + +" Loop control +syn match vmasmRepeat "\.irpc\=\>" +syn match vmasmRepeat "\.repeat\>" +syn match vmasmRepeat "\.rept\>" +syn match vmasmRepeat "\.endr\>" + +" Directives +syn match vmasmDirective "\.address\>" +syn match vmasmDirective "\.align\>" +syn match vmasmDirective "\.asci[cdiz]\>" +syn match vmasmDirective "\.blk[abdfghloqw]\>" +syn match vmasmDirective "\.\(signed_\)\=byte\>" +syn match vmasmDirective "\.\(no\)\=cross\>" +syn match vmasmDirective "\.debug\>" +syn match vmasmDirective "\.default displacement\>" +syn match vmasmDirective "\.[dfgh]_floating\>" +syn match vmasmDirective "\.disable\>" +syn match vmasmDirective "\.double\>" +syn match vmasmDirective "\.dsabl\>" +syn match vmasmDirective "\.enable\=\>" +syn match vmasmDirective "\.endc\=\>" +syn match vmasmDirective "\.entry\>" +syn match vmasmDirective "\.error\>" +syn match vmasmDirective "\.even\>" +syn match vmasmDirective "\.external\>" +syn match vmasmDirective "\.extrn\>" +syn match vmasmDirective "\.float\>" +syn match vmasmDirective "\.globa\=l\>" +syn match vmasmDirective "\.ident\>" +syn match vmasmDirective "\.link\>" +syn match vmasmDirective "\.list\>" +syn match vmasmDirective "\.long\>" +syn match vmasmDirective "\.mask\>" +syn match vmasmDirective "\.narg\>" +syn match vmasmDirective "\.nchr\>" +syn match vmasmDirective "\.nlist\>" +syn match vmasmDirective "\.ntype\>" +syn match vmasmDirective "\.octa\>" +syn match vmasmDirective "\.odd\>" +syn match vmasmDirective "\.opdef\>" +syn match vmasmDirective "\.packed\>" +syn match vmasmDirective "\.page\>" +syn match vmasmDirective "\.print\>" +syn match vmasmDirective "\.psect\>" +syn match vmasmDirective "\.quad\>" +syn match vmasmDirective "\.ref[1248]\>" +syn match vmasmDirective "\.ref16\>" +syn match vmasmDirective "\.restore\(_psect\)\=\>" +syn match vmasmDirective "\.save\(_psect\)\=\>" +syn match vmasmDirective "\.sbttl\>" +syn match vmasmDirective "\.\(no\)\=show\>" +syn match vmasmDirective "\.\(sub\)\=title\>" +syn match vmasmDirective "\.transfer\>" +syn match vmasmDirective "\.warn\>" +syn match vmasmDirective "\.weak\>" +syn match vmasmDirective "\.\(signed_\)\=word\>" + +syn case match + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_macro_syntax_inits") + if version < 508 + let did_macro_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + " The default methods for highlighting. Can be overridden later + " Comment Constant Error Identifier PreProc Special Statement Todo Type + " + " Constant Boolean Character Number String + " Identifier Function + " PreProc Define Include Macro PreCondit + " Special Debug Delimiter SpecialChar SpecialComment Tag + " Statement Conditional Exception Keyword Label Operator Repeat + " Type StorageClass Structure Typedef + + HiLink vmasmComment Comment + HiLink vmasmTodo Todo + + HiLink vmasmhexNumber Number " Constant + HiLink vmasmoctNumber Number " Constant + HiLink vmasmbinNumber Number " Constant + HiLink vmasmdecNumber Number " Constant + HiLink vmasmfloatNumber Number " Constant + +" HiLink vmasmString String " Constant + + HiLink vmasmReg Identifier + HiLink vmasmOperator Identifier + + HiLink vmasmInclude Include " PreProc + HiLink vmasmMacro Macro " PreProc + " HiLink vmasmMacroParam Keyword " Statement + + HiLink vmasmDirective Special + HiLink vmasmPreCond Special + + + HiLink vmasmOpcode Statement + HiLink vmasmCond Conditional " Statement + HiLink vmasmRepeat Repeat " Statement + + HiLink vmasmLabel Type + delcommand HiLink +endif + +let b:current_syntax = "vmasm" + +" vim: ts=8 sw=2 |