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