neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

asm68k.vim (14280B)


      1 " Vim syntax file
      2 " Language:	Motorola 68000 Assembler
      3 " Maintainer:	Steve Wall
      4 " Last change:	2001 May 01
      5 "
      6 " This is incomplete.  In particular, support for 68020 and
      7 " up and 68851/68881 co-processors is partial or non-existent.
      8 " Feel free to contribute...
      9 "
     10 
     11 " quit when a syntax file was already loaded
     12 if exists("b:current_syntax")
     13  finish
     14 endif
     15 
     16 syn case ignore
     17 
     18 " Partial list of register symbols
     19 syn keyword asm68kReg	a0 a1 a2 a3 a4 a5 a6 a7 d0 d1 d2 d3 d4 d5 d6 d7
     20 syn keyword asm68kReg	pc sr ccr sp usp ssp
     21 
     22 " MC68010
     23 syn keyword asm68kReg	vbr sfc sfcr dfc dfcr
     24 
     25 " MC68020
     26 syn keyword asm68kReg	msp isp zpc cacr caar
     27 syn keyword asm68kReg	za0 za1 za2 za3 za4 za5 za6 za7
     28 syn keyword asm68kReg	zd0 zd1 zd2 zd3 zd4 zd5 zd6 zd7
     29 
     30 " MC68030
     31 syn keyword asm68kReg	crp srp tc ac0 ac1 acusr tt0 tt1 mmusr
     32 
     33 " MC68040
     34 syn keyword asm68kReg	dtt0 dtt1 itt0 itt1 urp
     35 
     36 " MC68851 registers
     37 syn keyword asm68kReg	cal val scc crp srp drp tc ac psr pcsr
     38 syn keyword asm68kReg	bac0 bac1 bac2 bac3 bac4 bac5 bac6 bac7
     39 syn keyword asm68kReg	bad0 bad1 bad2 bad3 bad4 bad5 bad6 bad7
     40 
     41 " MC68881/82 registers
     42 syn keyword asm68kReg	fp0 fp1 fp2 fp3 fp4 fp5 fp6 fp7
     43 syn keyword asm68kReg	control status iaddr fpcr fpsr fpiar
     44 
     45 " M68000 opcodes - order is important!
     46 syn match asm68kOpcode "\<abcd\(\.b\)\=\s"
     47 syn match asm68kOpcode "\<adda\(\.[wl]\)\=\s"
     48 syn match asm68kOpcode "\<addi\(\.[bwl]\)\=\s"
     49 syn match asm68kOpcode "\<addq\(\.[bwl]\)\=\s"
     50 syn match asm68kOpcode "\<addx\(\.[bwl]\)\=\s"
     51 syn match asm68kOpcode "\<add\(\.[bwl]\)\=\s"
     52 syn match asm68kOpcode "\<andi\(\.[bwl]\)\=\s"
     53 syn match asm68kOpcode "\<and\(\.[bwl]\)\=\s"
     54 syn match asm68kOpcode "\<as[lr]\(\.[bwl]\)\=\s"
     55 syn match asm68kOpcode "\<b[vc][cs]\(\.[bwls]\)\=\s"
     56 syn match asm68kOpcode "\<beq\(\.[bwls]\)\=\s"
     57 syn match asm68kOpcode "\<bg[et]\(\.[bwls]\)\=\s"
     58 syn match asm68kOpcode "\<b[hm]i\(\.[bwls]\)\=\s"
     59 syn match asm68kOpcode "\<bl[est]\(\.[bwls]\)\=\s"
     60 syn match asm68kOpcode "\<bne\(\.[bwls]\)\=\s"
     61 syn match asm68kOpcode "\<bpl\(\.[bwls]\)\=\s"
     62 syn match asm68kOpcode "\<bchg\(\.[bl]\)\=\s"
     63 syn match asm68kOpcode "\<bclr\(\.[bl]\)\=\s"
     64 syn match asm68kOpcode "\<bfchg\s"
     65 syn match asm68kOpcode "\<bfclr\s"
     66 syn match asm68kOpcode "\<bfexts\s"
     67 syn match asm68kOpcode "\<bfextu\s"
     68 syn match asm68kOpcode "\<bfffo\s"
     69 syn match asm68kOpcode "\<bfins\s"
     70 syn match asm68kOpcode "\<bfset\s"
     71 syn match asm68kOpcode "\<bftst\s"
     72 syn match asm68kOpcode "\<bkpt\s"
     73 syn match asm68kOpcode "\<bra\(\.[bwls]\)\=\s"
     74 syn match asm68kOpcode "\<bset\(\.[bl]\)\=\s"
     75 syn match asm68kOpcode "\<bsr\(\.[bwl]\)\=\s"
     76 syn match asm68kOpcode "\<btst\(\.[bl]\)\=\s"
     77 syn match asm68kOpcode "\<callm\s"
     78 syn match asm68kOpcode "\<cas2\(\.[wl]\)\=\s"
     79 syn match asm68kOpcode "\<cas\(\.[bwl]\)\=\s"
     80 syn match asm68kOpcode "\<chk2\(\.[bwl]\)\=\s"
     81 syn match asm68kOpcode "\<chk\(\.[wl]\)\=\s"
     82 syn match asm68kOpcode "\<clr\(\.[bwl]\)\=\s"
     83 syn match asm68kOpcode "\<cmpa\(\.[wl]\)\=\s"
     84 syn match asm68kOpcode "\<cmpi\(\.[bwl]\)\=\s"
     85 syn match asm68kOpcode "\<cmpm\(\.[bwl]\)\=\s"
     86 syn match asm68kOpcode "\<cmp2\(\.[bwl]\)\=\s"
     87 syn match asm68kOpcode "\<cmp\(\.[bwl]\)\=\s"
     88 syn match asm68kOpcode "\<db[cv][cs]\(\.w\)\=\s"
     89 syn match asm68kOpcode "\<dbeq\(\.w\)\=\s"
     90 syn match asm68kOpcode "\<db[ft]\(\.w\)\=\s"
     91 syn match asm68kOpcode "\<dbg[et]\(\.w\)\=\s"
     92 syn match asm68kOpcode "\<db[hm]i\(\.w\)\=\s"
     93 syn match asm68kOpcode "\<dbl[est]\(\.w\)\=\s"
     94 syn match asm68kOpcode "\<dbne\(\.w\)\=\s"
     95 syn match asm68kOpcode "\<dbpl\(\.w\)\=\s"
     96 syn match asm68kOpcode "\<dbra\(\.w\)\=\s"
     97 syn match asm68kOpcode "\<div[su]\(\.[wl]\)\=\s"
     98 syn match asm68kOpcode "\<div[su]l\(\.l\)\=\s"
     99 syn match asm68kOpcode "\<eori\(\.[bwl]\)\=\s"
    100 syn match asm68kOpcode "\<eor\(\.[bwl]\)\=\s"
    101 syn match asm68kOpcode "\<exg\(\.l\)\=\s"
    102 syn match asm68kOpcode "\<extb\(\.l\)\=\s"
    103 syn match asm68kOpcode "\<ext\(\.[wl]\)\=\s"
    104 syn match asm68kOpcode "\<illegal\>"
    105 syn match asm68kOpcode "\<jmp\(\.[ls]\)\=\s"
    106 syn match asm68kOpcode "\<jsr\(\.[ls]\)\=\s"
    107 syn match asm68kOpcode "\<lea\(\.l\)\=\s"
    108 syn match asm68kOpcode "\<link\(\.[wl]\)\=\s"
    109 syn match asm68kOpcode "\<ls[lr]\(\.[bwl]\)\=\s"
    110 syn match asm68kOpcode "\<movea\(\.[wl]\)\=\s"
    111 syn match asm68kOpcode "\<movec\(\.l\)\=\s"
    112 syn match asm68kOpcode "\<movem\(\.[wl]\)\=\s"
    113 syn match asm68kOpcode "\<movep\(\.[wl]\)\=\s"
    114 syn match asm68kOpcode "\<moveq\(\.l\)\=\s"
    115 syn match asm68kOpcode "\<moves\(\.[bwl]\)\=\s"
    116 syn match asm68kOpcode "\<move\(\.[bwl]\)\=\s"
    117 syn match asm68kOpcode "\<mul[su]\(\.[wl]\)\=\s"
    118 syn match asm68kOpcode "\<nbcd\(\.b\)\=\s"
    119 syn match asm68kOpcode "\<negx\(\.[bwl]\)\=\s"
    120 syn match asm68kOpcode "\<neg\(\.[bwl]\)\=\s"
    121 syn match asm68kOpcode "\<nop\>"
    122 syn match asm68kOpcode "\<not\(\.[bwl]\)\=\s"
    123 syn match asm68kOpcode "\<ori\(\.[bwl]\)\=\s"
    124 syn match asm68kOpcode "\<or\(\.[bwl]\)\=\s"
    125 syn match asm68kOpcode "\<pack\s"
    126 syn match asm68kOpcode "\<pea\(\.l\)\=\s"
    127 syn match asm68kOpcode "\<reset\>"
    128 syn match asm68kOpcode "\<ro[lr]\(\.[bwl]\)\=\s"
    129 syn match asm68kOpcode "\<rox[lr]\(\.[bwl]\)\=\s"
    130 syn match asm68kOpcode "\<rt[dm]\s"
    131 syn match asm68kOpcode "\<rt[ers]\>"
    132 syn match asm68kOpcode "\<sbcd\(\.b\)\=\s"
    133 syn match asm68kOpcode "\<s[cv][cs]\(\.b\)\=\s"
    134 syn match asm68kOpcode "\<seq\(\.b\)\=\s"
    135 syn match asm68kOpcode "\<s[ft]\(\.b\)\=\s"
    136 syn match asm68kOpcode "\<sg[et]\(\.b\)\=\s"
    137 syn match asm68kOpcode "\<s[hm]i\(\.b\)\=\s"
    138 syn match asm68kOpcode "\<sl[est]\(\.b\)\=\s"
    139 syn match asm68kOpcode "\<sne\(\.b\)\=\s"
    140 syn match asm68kOpcode "\<spl\(\.b\)\=\s"
    141 syn match asm68kOpcode "\<suba\(\.[wl]\)\=\s"
    142 syn match asm68kOpcode "\<subi\(\.[bwl]\)\=\s"
    143 syn match asm68kOpcode "\<subq\(\.[bwl]\)\=\s"
    144 syn match asm68kOpcode "\<subx\(\.[bwl]\)\=\s"
    145 syn match asm68kOpcode "\<sub\(\.[bwl]\)\=\s"
    146 syn match asm68kOpcode "\<swap\(\.w\)\=\s"
    147 syn match asm68kOpcode "\<tas\(\.b\)\=\s"
    148 syn match asm68kOpcode "\<tdiv[su]\(\.l\)\=\s"
    149 syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\(\.[wl]\)\=\s"
    150 syn match asm68kOpcode "\<t\(rap\)\=eq\(\.[wl]\)\=\s"
    151 syn match asm68kOpcode "\<t\(rap\)\=[ft]\(\.[wl]\)\=\s"
    152 syn match asm68kOpcode "\<t\(rap\)\=g[et]\(\.[wl]\)\=\s"
    153 syn match asm68kOpcode "\<t\(rap\)\=[hm]i\(\.[wl]\)\=\s"
    154 syn match asm68kOpcode "\<t\(rap\)\=l[est]\(\.[wl]\)\=\s"
    155 syn match asm68kOpcode "\<t\(rap\)\=ne\(\.[wl]\)\=\s"
    156 syn match asm68kOpcode "\<t\(rap\)\=pl\(\.[wl]\)\=\s"
    157 syn match asm68kOpcode "\<t\(rap\)\=v\>"
    158 syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\>"
    159 syn match asm68kOpcode "\<t\(rap\)\=eq\>"
    160 syn match asm68kOpcode "\<t\(rap\)\=[ft]\>"
    161 syn match asm68kOpcode "\<t\(rap\)\=g[et]\>"
    162 syn match asm68kOpcode "\<t\(rap\)\=[hm]i\>"
    163 syn match asm68kOpcode "\<t\(rap\)\=l[est]\>"
    164 syn match asm68kOpcode "\<t\(rap\)\=ne\>"
    165 syn match asm68kOpcode "\<t\(rap\)\=pl\>"
    166 syn match asm68kOpcode "\<trap\s"
    167 syn match asm68kOpcode "\<tst\(\.[bwl]\)\=\s"
    168 syn match asm68kOpcode "\<unlk\s"
    169 syn match asm68kOpcode "\<unpk\s"
    170 
    171 " Valid labels
    172 syn match asm68kLabel		"^[a-z_?.][a-z0-9_?.$]*$"
    173 syn match asm68kLabel		"^[a-z_?.][a-z0-9_?.$]*\s"he=e-1
    174 syn match asm68kLabel		"^\s*[a-z_?.][a-z0-9_?.$]*:"he=e-1
    175 
    176 " Various number formats
    177 syn match hexNumber		"\$[0-9a-fA-F]\+\>"
    178 syn match hexNumber		"\<[0-9][0-9a-fA-F]*H\>"
    179 syn match octNumber		"@[0-7]\+\>"
    180 syn match octNumber		"\<[0-7]\+[QO]\>"
    181 syn match binNumber		"%[01]\+\>"
    182 syn match binNumber		"\<[01]\+B\>"
    183 syn match decNumber		"\<[0-9]\+D\=\>"
    184 syn match floatE		"_*E_*" contained
    185 syn match floatExponent		"_*E_*[-+]\=[0-9]\+" contained contains=floatE
    186 syn match floatNumber		"[-+]\=[0-9]\+_*E_*[-+]\=[0-9]\+" contains=floatExponent
    187 syn match floatNumber		"[-+]\=[0-9]\+\.[0-9]\+\(E[-+]\=[0-9]\+\)\=" contains=floatExponent
    188 syn match floatNumber		":\([0-9a-f]\+_*\)\+"
    189 
    190 " Character string constants
    191 syn match asm68kStringError	"'[ -~]*'"
    192 syn match asm68kStringError	"'[ -~]*$"
    193 syn region asm68kString		start="'" skip="''" end="'" oneline contains=asm68kCharError
    194 syn match asm68kCharError	"[^ -~]" contained
    195 
    196 " Immediate data
    197 syn match asm68kImmediate	"#\$[0-9a-fA-F]\+" contains=hexNumber
    198 syn match asm68kImmediate	"#[0-9][0-9a-fA-F]*H" contains=hexNumber
    199 syn match asm68kImmediate	"#@[0-7]\+" contains=octNumber
    200 syn match asm68kImmediate	"#[0-7]\+[QO]" contains=octNumber
    201 syn match asm68kImmediate	"#%[01]\+" contains=binNumber
    202 syn match asm68kImmediate	"#[01]\+B" contains=binNumber
    203 syn match asm68kImmediate	"#[0-9]\+D\=" contains=decNumber
    204 syn match asm68kSymbol		"[a-z_?.][a-z0-9_?.$]*" contained
    205 syn match asm68kImmediate	"#[a-z_?.][a-z0-9_?.]*" contains=asm68kSymbol
    206 
    207 " Special items for comments
    208 syn keyword asm68kTodo		contained TODO
    209 
    210 " Operators
    211 syn match asm68kOperator	"[-+*/]"	" Must occur before Comments
    212 syn match asm68kOperator	"\.SIZEOF\."
    213 syn match asm68kOperator	"\.STARTOF\."
    214 syn match asm68kOperator	"<<"		" shift left
    215 syn match asm68kOperator	">>"		" shift right
    216 syn match asm68kOperator	"&"		" bit-wise logical and
    217 syn match asm68kOperator	"!"		" bit-wise logical or
    218 syn match asm68kOperator	"!!"		" exclusive or
    219 syn match asm68kOperator	"<>"		" inequality
    220 syn match asm68kOperator	"="		" must be before other ops containing '='
    221 syn match asm68kOperator	">="
    222 syn match asm68kOperator	"<="
    223 syn match asm68kOperator	"=="		" operand existence - used in macro definitions
    224 
    225 " Condition code style operators
    226 syn match asm68kOperator	"<[CV][CS]>"
    227 syn match asm68kOperator	"<EQ>"
    228 syn match asm68kOperator	"<G[TE]>"
    229 syn match asm68kOperator	"<[HM]I>"
    230 syn match asm68kOperator	"<L[SET]>"
    231 syn match asm68kOperator	"<NE>"
    232 syn match asm68kOperator	"<PL>"
    233 
    234 " Comments
    235 syn match asm68kComment		";.*" contains=asm68kTodo
    236 syn match asm68kComment		"\s!.*"ms=s+1 contains=asm68kTodo
    237 syn match asm68kComment		"^\s*[*!].*" contains=asm68kTodo
    238 
    239 " Include
    240 syn match asm68kInclude		"\<INCLUDE\s"
    241 
    242 " Standard macros
    243 syn match asm68kCond		"\<IF\(\.[BWL]\)\=\s"
    244 syn match asm68kCond		"\<THEN\(\.[SL]\)\=\>"
    245 syn match asm68kCond		"\<ELSE\(\.[SL]\)\=\>"
    246 syn match asm68kCond		"\<ENDI\>"
    247 syn match asm68kCond		"\<BREAK\(\.[SL]\)\=\>"
    248 syn match asm68kRepeat		"\<FOR\(\.[BWL]\)\=\s"
    249 syn match asm68kRepeat		"\<DOWNTO\s"
    250 syn match asm68kRepeat		"\<TO\s"
    251 syn match asm68kRepeat		"\<BY\s"
    252 syn match asm68kRepeat		"\<DO\(\.[SL]\)\=\>"
    253 syn match asm68kRepeat		"\<ENDF\>"
    254 syn match asm68kRepeat		"\<NEXT\(\.[SL]\)\=\>"
    255 syn match asm68kRepeat		"\<REPEAT\>"
    256 syn match asm68kRepeat		"\<UNTIL\(\.[BWL]\)\=\s"
    257 syn match asm68kRepeat		"\<WHILE\(\.[BWL]\)\=\s"
    258 syn match asm68kRepeat		"\<ENDW\>"
    259 
    260 " Macro definition
    261 syn match asm68kMacro		"\<MACRO\>"
    262 syn match asm68kMacro		"\<LOCAL\s"
    263 syn match asm68kMacro		"\<MEXIT\>"
    264 syn match asm68kMacro		"\<ENDM\>"
    265 syn match asm68kMacroParam	"\\[0-9]"
    266 
    267 " Conditional assembly
    268 syn match asm68kPreCond		"\<IFC\s"
    269 syn match asm68kPreCond		"\<IFDEF\s"
    270 syn match asm68kPreCond		"\<IFEQ\s"
    271 syn match asm68kPreCond		"\<IFGE\s"
    272 syn match asm68kPreCond		"\<IFGT\s"
    273 syn match asm68kPreCond		"\<IFLE\s"
    274 syn match asm68kPreCond		"\<IFLT\s"
    275 syn match asm68kPreCond		"\<IFNC\>"
    276 syn match asm68kPreCond		"\<IFNDEF\s"
    277 syn match asm68kPreCond		"\<IFNE\s"
    278 syn match asm68kPreCond		"\<ELSEC\>"
    279 syn match asm68kPreCond		"\<ENDC\>"
    280 
    281 " Loop control
    282 syn match asm68kPreCond		"\<REPT\s"
    283 syn match asm68kPreCond		"\<IRP\s"
    284 syn match asm68kPreCond		"\<IRPC\s"
    285 syn match asm68kPreCond		"\<ENDR\>"
    286 
    287 " Directives
    288 syn match asm68kDirective	"\<ALIGN\s"
    289 syn match asm68kDirective	"\<CHIP\s"
    290 syn match asm68kDirective	"\<COMLINE\s"
    291 syn match asm68kDirective	"\<COMMON\(\.S\)\=\s"
    292 syn match asm68kDirective	"\<DC\(\.[BWLSDXP]\)\=\s"
    293 syn match asm68kDirective	"\<DC\.\\[0-9]\s"me=e-3	" Special use in a macro def
    294 syn match asm68kDirective	"\<DCB\(\.[BWLSDXP]\)\=\s"
    295 syn match asm68kDirective	"\<DS\(\.[BWLSDXP]\)\=\s"
    296 syn match asm68kDirective	"\<END\>"
    297 syn match asm68kDirective	"\<EQU\s"
    298 syn match asm68kDirective	"\<FEQU\(\.[SDXP]\)\=\s"
    299 syn match asm68kDirective	"\<FAIL\>"
    300 syn match asm68kDirective	"\<FOPT\s"
    301 syn match asm68kDirective	"\<\(NO\)\=FORMAT\>"
    302 syn match asm68kDirective	"\<IDNT\>"
    303 syn match asm68kDirective	"\<\(NO\)\=LIST\>"
    304 syn match asm68kDirective	"\<LLEN\s"
    305 syn match asm68kDirective	"\<MASK2\>"
    306 syn match asm68kDirective	"\<NAME\s"
    307 syn match asm68kDirective	"\<NOOBJ\>"
    308 syn match asm68kDirective	"\<OFFSET\s"
    309 syn match asm68kDirective	"\<OPT\>"
    310 syn match asm68kDirective	"\<ORG\(\.[SL]\)\=\>"
    311 syn match asm68kDirective	"\<\(NO\)\=PAGE\>"
    312 syn match asm68kDirective	"\<PLEN\s"
    313 syn match asm68kDirective	"\<REG\s"
    314 syn match asm68kDirective	"\<RESTORE\>"
    315 syn match asm68kDirective	"\<SAVE\>"
    316 syn match asm68kDirective	"\<SECT\(\.S\)\=\s"
    317 syn match asm68kDirective	"\<SECTION\(\.S\)\=\s"
    318 syn match asm68kDirective	"\<SET\s"
    319 syn match asm68kDirective	"\<SPC\s"
    320 syn match asm68kDirective	"\<TTL\s"
    321 syn match asm68kDirective	"\<XCOM\s"
    322 syn match asm68kDirective	"\<XDEF\s"
    323 syn match asm68kDirective	"\<XREF\(\.S\)\=\s"
    324 
    325 syn case match
    326 
    327 " Define the default highlighting.
    328 " Only when an item doesn't have highlighting yet
    329 
    330 " The default methods for highlighting.  Can be overridden later
    331 " Comment Constant Error Identifier PreProc Special Statement Todo Type
    332 "
    333 " Constant		Boolean Character Number String
    334 " Identifier		Function
    335 " PreProc		Define Include Macro PreCondit
    336 " Special		Debug Delimiter SpecialChar SpecialComment Tag
    337 " Statement		Conditional Exception Keyword Label Operator Repeat
    338 " Type		StorageClass Structure Typedef
    339 
    340 hi def link asm68kComment		Comment
    341 hi def link asm68kTodo		Todo
    342 
    343 hi def link hexNumber		Number		" Constant
    344 hi def link octNumber		Number		" Constant
    345 hi def link binNumber		Number		" Constant
    346 hi def link decNumber		Number		" Constant
    347 hi def link floatNumber		Number		" Constant
    348 hi def link floatExponent		Number		" Constant
    349 hi def link floatE			SpecialChar	" Statement
    350 "hi def link floatE		Number		" Constant
    351 
    352 hi def link asm68kImmediate	SpecialChar	" Statement
    353 "hi def link asm68kSymbol		Constant
    354 
    355 hi def link asm68kString		String		" Constant
    356 hi def link asm68kCharError	Error
    357 hi def link asm68kStringError	Error
    358 
    359 hi def link asm68kReg		Identifier
    360 hi def link asm68kOperator		Identifier
    361 
    362 hi def link asm68kInclude		Include		" PreProc
    363 hi def link asm68kMacro		Macro		" PreProc
    364 hi def link asm68kMacroParam	Keyword		" Statement
    365 
    366 hi def link asm68kDirective	Special
    367 hi def link asm68kPreCond		Special
    368 
    369 
    370 hi def link asm68kOpcode		Statement
    371 hi def link asm68kCond		Conditional	" Statement
    372 hi def link asm68kRepeat		Repeat		" Statement
    373 
    374 hi def link asm68kLabel		Type
    375 
    376 let b:current_syntax = "asm68k"
    377 
    378 " vim: ts=8 sw=2