diff runtime/syntax/asm68k.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/asm68k.vim	Sat Nov 10 15:07:22 2007 +0900
@@ -0,0 +1,391 @@
+" Vim syntax file
+" Language:	Motorola 68000 Assembler
+" Maintainer:	Steve Wall
+" Last change:	2001 May 01
+"
+" This is incomplete.  In particular, support for 68020 and
+" up and 68851/68881 co-processors is partial or non-existant.
+" 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 asm68kReg	a0 a1 a2 a3 a4 a5 a6 a7 d0 d1 d2 d3 d4 d5 d6 d7
+syn keyword asm68kReg	pc sr ccr sp usp ssp
+
+" MC68010
+syn keyword asm68kReg	vbr sfc sfcr dfc dfcr
+
+" MC68020
+syn keyword asm68kReg	msp isp zpc cacr caar
+syn keyword asm68kReg	za0 za1 za2 za3 za4 za5 za6 za7
+syn keyword asm68kReg	zd0 zd1 zd2 zd3 zd4 zd5 zd6 zd7
+
+" MC68030
+syn keyword asm68kReg	crp srp tc ac0 ac1 acusr tt0 tt1 mmusr
+
+" MC68040
+syn keyword asm68kReg	dtt0 dtt1 itt0 itt1 urp
+
+" MC68851 registers
+syn keyword asm68kReg	cal val scc crp srp drp tc ac psr pcsr
+syn keyword asm68kReg	bac0 bac1 bac2 bac3 bac4 bac5 bac6 bac7
+syn keyword asm68kReg	bad0 bad1 bad2 bad3 bad4 bad5 bad6 bad7
+
+" MC68881/82 registers
+syn keyword asm68kReg	fp0 fp1 fp2 fp3 fp4 fp5 fp6 fp7
+syn keyword asm68kReg	control status iaddr fpcr fpsr fpiar
+
+" M68000 opcodes - order is important!
+syn match asm68kOpcode "\<abcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<adda\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<addi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<addq\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<addx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<add\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<andi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<and\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<as[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<b[vc][cs]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<beq\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bg[et]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<b[hm]i\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bl[est]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bne\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bpl\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bchg\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bclr\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bfchg\s"
+syn match asm68kOpcode "\<bfclr\s"
+syn match asm68kOpcode "\<bfexts\s"
+syn match asm68kOpcode "\<bfextu\s"
+syn match asm68kOpcode "\<bfffo\s"
+syn match asm68kOpcode "\<bfins\s"
+syn match asm68kOpcode "\<bfset\s"
+syn match asm68kOpcode "\<bftst\s"
+syn match asm68kOpcode "\<bkpt\s"
+syn match asm68kOpcode "\<bra\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bset\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bsr\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<btst\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<callm\s"
+syn match asm68kOpcode "\<cas2\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<cas\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<chk2\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<chk\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<clr\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmpa\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<cmpi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmpm\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmp2\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmp\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<db[cv][cs]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbeq\(\.w\)\=\s"
+syn match asm68kOpcode "\<db[ft]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbg[et]\(\.w\)\=\s"
+syn match asm68kOpcode "\<db[hm]i\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbl[est]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbne\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbpl\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbra\(\.w\)\=\s"
+syn match asm68kOpcode "\<div[su]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<div[su]l\(\.l\)\=\s"
+syn match asm68kOpcode "\<eori\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<eor\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<exg\(\.l\)\=\s"
+syn match asm68kOpcode "\<extb\(\.l\)\=\s"
+syn match asm68kOpcode "\<ext\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<illegal\>"
+syn match asm68kOpcode "\<jmp\(\.[ls]\)\=\s"
+syn match asm68kOpcode "\<jsr\(\.[ls]\)\=\s"
+syn match asm68kOpcode "\<lea\(\.l\)\=\s"
+syn match asm68kOpcode "\<link\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<ls[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<movea\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<movec\(\.l\)\=\s"
+syn match asm68kOpcode "\<movem\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<movep\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<moveq\(\.l\)\=\s"
+syn match asm68kOpcode "\<moves\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<move\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<mul[su]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<nbcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<negx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<neg\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<nop\>"
+syn match asm68kOpcode "\<not\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<ori\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<or\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<pack\s"
+syn match asm68kOpcode "\<pea\(\.l\)\=\s"
+syn match asm68kOpcode "\<reset\>"
+syn match asm68kOpcode "\<ro[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<rox[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<rt[dm]\s"
+syn match asm68kOpcode "\<rt[ers]\>"
+syn match asm68kOpcode "\<sbcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[cv][cs]\(\.b\)\=\s"
+syn match asm68kOpcode "\<seq\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[ft]\(\.b\)\=\s"
+syn match asm68kOpcode "\<sg[et]\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[hm]i\(\.b\)\=\s"
+syn match asm68kOpcode "\<sl[est]\(\.b\)\=\s"
+syn match asm68kOpcode "\<sne\(\.b\)\=\s"
+syn match asm68kOpcode "\<spl\(\.b\)\=\s"
+syn match asm68kOpcode "\<suba\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<subi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<subq\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<subx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<sub\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<swap\(\.w\)\=\s"
+syn match asm68kOpcode "\<tas\(\.b\)\=\s"
+syn match asm68kOpcode "\<tdiv[su]\(\.l\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=eq\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[ft]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=g[et]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[hm]i\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=l[est]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=ne\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=pl\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=v\>"
+syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\>"
+syn match asm68kOpcode "\<t\(rap\)\=eq\>"
+syn match asm68kOpcode "\<t\(rap\)\=[ft]\>"
+syn match asm68kOpcode "\<t\(rap\)\=g[et]\>"
+syn match asm68kOpcode "\<t\(rap\)\=[hm]i\>"
+syn match asm68kOpcode "\<t\(rap\)\=l[est]\>"
+syn match asm68kOpcode "\<t\(rap\)\=ne\>"
+syn match asm68kOpcode "\<t\(rap\)\=pl\>"
+syn match asm68kOpcode "\<trap\s"
+syn match asm68kOpcode "\<tst\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<unlk\s"
+syn match asm68kOpcode "\<unpk\s"
+
+" Valid labels
+syn match asm68kLabel		"^[a-z_?.][a-z0-9_?.$]*$"
+syn match asm68kLabel		"^[a-z_?.][a-z0-9_?.$]*\s"he=e-1
+syn match asm68kLabel		"^\s*[a-z_?.][a-z0-9_?.$]*:"he=e-1
+
+" Various number formats
+syn match hexNumber		"\$[0-9a-fA-F]\+\>"
+syn match hexNumber		"\<[0-9][0-9a-fA-F]*H\>"
+syn match octNumber		"@[0-7]\+\>"
+syn match octNumber		"\<[0-7]\+[QO]\>"
+syn match binNumber		"%[01]\+\>"
+syn match binNumber		"\<[01]\+B\>"
+syn match decNumber		"\<[0-9]\+D\=\>"
+syn match floatE		"_*E_*" contained
+syn match floatExponent		"_*E_*[-+]\=[0-9]\+" contained contains=floatE
+syn match floatNumber		"[-+]\=[0-9]\+_*E_*[-+]\=[0-9]\+" contains=floatExponent
+syn match floatNumber		"[-+]\=[0-9]\+\.[0-9]\+\(E[-+]\=[0-9]\+\)\=" contains=floatExponent
+syn match floatNumber		":\([0-9a-f]\+_*\)\+"
+
+" Character string constants
+syn match asm68kStringError	"'[ -~]*'"
+syn match asm68kStringError	"'[ -~]*$"
+syn region asm68kString		start="'" skip="''" end="'" oneline contains=asm68kCharError
+syn match asm68kCharError	"[^ -~]" contained
+
+" Immediate data
+syn match asm68kImmediate	"#\$[0-9a-fA-F]\+" contains=hexNumber
+syn match asm68kImmediate	"#[0-9][0-9a-fA-F]*H" contains=hexNumber
+syn match asm68kImmediate	"#@[0-7]\+" contains=octNumber
+syn match asm68kImmediate	"#[0-7]\+[QO]" contains=octNumber
+syn match asm68kImmediate	"#%[01]\+" contains=binNumber
+syn match asm68kImmediate	"#[01]\+B" contains=binNumber
+syn match asm68kImmediate	"#[0-9]\+D\=" contains=decNumber
+syn match asm68kSymbol		"[a-z_?.][a-z0-9_?.$]*" contained
+syn match asm68kImmediate	"#[a-z_?.][a-z0-9_?.]*" contains=asm68kSymbol
+
+" Special items for comments
+syn keyword asm68kTodo		contained TODO
+
+" Operators
+syn match asm68kOperator	"[-+*/]"	" Must occur before Comments
+syn match asm68kOperator	"\.SIZEOF\."
+syn match asm68kOperator	"\.STARTOF\."
+syn match asm68kOperator	"<<"		" shift left
+syn match asm68kOperator	">>"		" shift right
+syn match asm68kOperator	"&"		" bit-wise logical and
+syn match asm68kOperator	"!"		" bit-wise logical or
+syn match asm68kOperator	"!!"		" exclusive or
+syn match asm68kOperator	"<>"		" inequality
+syn match asm68kOperator	"="		" must be before other ops containing '='
+syn match asm68kOperator	">="
+syn match asm68kOperator	"<="
+syn match asm68kOperator	"=="		" operand existance - used in macro definitions
+
+" Condition code style operators
+syn match asm68kOperator	"<[CV][CS]>"
+syn match asm68kOperator	"<EQ>"
+syn match asm68kOperator	"<G[TE]>"
+syn match asm68kOperator	"<[HM]I>"
+syn match asm68kOperator	"<L[SET]>"
+syn match asm68kOperator	"<NE>"
+syn match asm68kOperator	"<PL>"
+
+" Comments
+syn match asm68kComment		";.*" contains=asm68kTodo
+syn match asm68kComment		"\s!.*"ms=s+1 contains=asm68kTodo
+syn match asm68kComment		"^\s*[*!].*" contains=asm68kTodo
+
+" Include
+syn match asm68kInclude		"\<INCLUDE\s"
+
+" Standard macros
+syn match asm68kCond		"\<IF\(\.[BWL]\)\=\s"
+syn match asm68kCond		"\<THEN\(\.[SL]\)\=\>"
+syn match asm68kCond		"\<ELSE\(\.[SL]\)\=\>"
+syn match asm68kCond		"\<ENDI\>"
+syn match asm68kCond		"\<BREAK\(\.[SL]\)\=\>"
+syn match asm68kRepeat		"\<FOR\(\.[BWL]\)\=\s"
+syn match asm68kRepeat		"\<DOWNTO\s"
+syn match asm68kRepeat		"\<TO\s"
+syn match asm68kRepeat		"\<BY\s"
+syn match asm68kRepeat		"\<DO\(\.[SL]\)\=\>"
+syn match asm68kRepeat		"\<ENDF\>"
+syn match asm68kRepeat		"\<NEXT\(\.[SL]\)\=\>"
+syn match asm68kRepeat		"\<REPEAT\>"
+syn match asm68kRepeat		"\<UNTIL\(\.[BWL]\)\=\s"
+syn match asm68kRepeat		"\<WHILE\(\.[BWL]\)\=\s"
+syn match asm68kRepeat		"\<ENDW\>"
+
+" Macro definition
+syn match asm68kMacro		"\<MACRO\>"
+syn match asm68kMacro		"\<LOCAL\s"
+syn match asm68kMacro		"\<MEXIT\>"
+syn match asm68kMacro		"\<ENDM\>"
+syn match asm68kMacroParam	"\\[0-9]"
+
+" Conditional assembly
+syn match asm68kPreCond		"\<IFC\s"
+syn match asm68kPreCond		"\<IFDEF\s"
+syn match asm68kPreCond		"\<IFEQ\s"
+syn match asm68kPreCond		"\<IFGE\s"
+syn match asm68kPreCond		"\<IFGT\s"
+syn match asm68kPreCond		"\<IFLE\s"
+syn match asm68kPreCond		"\<IFLT\s"
+syn match asm68kPreCond		"\<IFNC\>"
+syn match asm68kPreCond		"\<IFNDEF\s"
+syn match asm68kPreCond		"\<IFNE\s"
+syn match asm68kPreCond		"\<ELSEC\>"
+syn match asm68kPreCond		"\<ENDC\>"
+
+" Loop control
+syn match asm68kPreCond		"\<REPT\s"
+syn match asm68kPreCond		"\<IRP\s"
+syn match asm68kPreCond		"\<IRPC\s"
+syn match asm68kPreCond		"\<ENDR\>"
+
+" Directives
+syn match asm68kDirective	"\<ALIGN\s"
+syn match asm68kDirective	"\<CHIP\s"
+syn match asm68kDirective	"\<COMLINE\s"
+syn match asm68kDirective	"\<COMMON\(\.S\)\=\s"
+syn match asm68kDirective	"\<DC\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective	"\<DC\.\\[0-9]\s"me=e-3	" Special use in a macro def
+syn match asm68kDirective	"\<DCB\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective	"\<DS\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective	"\<END\>"
+syn match asm68kDirective	"\<EQU\s"
+syn match asm68kDirective	"\<FEQU\(\.[SDXP]\)\=\s"
+syn match asm68kDirective	"\<FAIL\>"
+syn match asm68kDirective	"\<FOPT\s"
+syn match asm68kDirective	"\<\(NO\)\=FORMAT\>"
+syn match asm68kDirective	"\<IDNT\>"
+syn match asm68kDirective	"\<\(NO\)\=LIST\>"
+syn match asm68kDirective	"\<LLEN\s"
+syn match asm68kDirective	"\<MASK2\>"
+syn match asm68kDirective	"\<NAME\s"
+syn match asm68kDirective	"\<NOOBJ\>"
+syn match asm68kDirective	"\<OFFSET\s"
+syn match asm68kDirective	"\<OPT\>"
+syn match asm68kDirective	"\<ORG\(\.[SL]\)\=\>"
+syn match asm68kDirective	"\<\(NO\)\=PAGE\>"
+syn match asm68kDirective	"\<PLEN\s"
+syn match asm68kDirective	"\<REG\s"
+syn match asm68kDirective	"\<RESTORE\>"
+syn match asm68kDirective	"\<SAVE\>"
+syn match asm68kDirective	"\<SECT\(\.S\)\=\s"
+syn match asm68kDirective	"\<SECTION\(\.S\)\=\s"
+syn match asm68kDirective	"\<SET\s"
+syn match asm68kDirective	"\<SPC\s"
+syn match asm68kDirective	"\<TTL\s"
+syn match asm68kDirective	"\<XCOM\s"
+syn match asm68kDirective	"\<XDEF\s"
+syn match asm68kDirective	"\<XREF\(\.S\)\=\s"
+
+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_asm68k_syntax_inits")
+  if version < 508
+    let did_asm68k_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 asm68kComment		Comment
+  HiLink asm68kTodo		Todo
+
+  HiLink hexNumber		Number		" Constant
+  HiLink octNumber		Number		" Constant
+  HiLink binNumber		Number		" Constant
+  HiLink decNumber		Number		" Constant
+  HiLink floatNumber		Number		" Constant
+  HiLink floatExponent		Number		" Constant
+  HiLink floatE			SpecialChar	" Statement
+  "HiLink floatE		Number		" Constant
+
+  HiLink asm68kImmediate	SpecialChar	" Statement
+  "HiLink asm68kSymbol		Constant
+
+  HiLink asm68kString		String		" Constant
+  HiLink asm68kCharError	Error
+  HiLink asm68kStringError	Error
+
+  HiLink asm68kReg		Identifier
+  HiLink asm68kOperator		Identifier
+
+  HiLink asm68kInclude		Include		" PreProc
+  HiLink asm68kMacro		Macro		" PreProc
+  HiLink asm68kMacroParam	Keyword		" Statement
+
+  HiLink asm68kDirective	Special
+  HiLink asm68kPreCond		Special
+
+
+  HiLink asm68kOpcode		Statement
+  HiLink asm68kCond		Conditional	" Statement
+  HiLink asm68kRepeat		Repeat		" Statement
+
+  HiLink asm68kLabel		Type
+  delcommand HiLink
+endif
+
+let b:current_syntax = "asm68k"
+
+" vim: ts=8 sw=2