xref: /vim-8.2.3635/runtime/syntax/mmix.vim (revision cf2d8dee)
1" Vim syntax file
2" Language:	MMIX
3" Maintainer:	Dirk H�sken, <[email protected]>
4" Last Change:	2012 Jun 01
5" 		(Dominique Pelle added @Spell)
6" Filenames:	*.mms
7" URL: http://homepages.uni-tuebingen.de/student/dirk.huesken/vim/syntax/mmix.vim
8
9" Limitations:	Comments must start with either % or //
10"		(preferably %, Knuth-Style)
11
12if version < 600
13  syntax clear
14elseif exists("b:current_syntax")
15  finish
16endif
17
18syn case ignore
19
20" MMIX data types
21syn keyword mmixType	byte wyde tetra octa
22
23" different literals...
24syn match decNumber		"[0-9]*"
25syn match octNumber		"0[0-7][0-7]\+"
26syn match hexNumber		"#[0-9a-fA-F]\+"
27syn region mmixString		start=+"+ skip=+\\"+ end=+"+ contains=@Spell
28syn match mmixChar		"'.'"
29
30" ...and more special MMIX stuff
31syn match mmixAt		"@"
32syn keyword mmixSegments	Data_Segment Pool_Segment Stack_Segment
33
34syn match mmixIdentifier	"[a-z_][a-z0-9_]*"
35
36" labels (for branches etc)
37syn match mmixLabel		"^[a-z0-9_:][a-z0-9_]*"
38syn match mmixLabel		"[0-9][HBF]"
39
40" pseudo-operations
41syn keyword mmixPseudo		is loc greg
42
43" comments
44syn match mmixComment		"%.*" contains=@Spell
45syn match mmixComment		"//.*" contains=@Spell
46syn match mmixComment		"^\*.*" contains=@Spell
47
48
49syn keyword mmixOpcode	trap fcmp fun feql fadd fix fsub fixu
50syn keyword mmixOpcode	fmul fcmpe fune feqle fdiv fsqrt frem fint
51
52syn keyword mmixOpcode	floti flotui sfloti sflotui i
53syn keyword mmixOpcode	muli mului divi divui
54syn keyword mmixOpcode	addi addui subi subui
55syn keyword mmixOpcode	2addui 4addui 8addui 16addui
56syn keyword mmixOpcode	cmpi cmpui negi negui
57syn keyword mmixOpcode	sli slui sri srui
58syn keyword mmixOpcode	bnb bzb bpb bodb
59syn keyword mmixOpcode	bnnb bnzb bnpb bevb
60syn keyword mmixOpcode	pbnb pbzb pbpb pbodb
61syn keyword mmixOpcode	pbnnb pbnzb pbnpb pbevb
62syn keyword mmixOpcode	csni cszi cspi csodi
63syn keyword mmixOpcode	csnni csnzi csnpi csevi
64syn keyword mmixOpcode	zsni zszi zspi zsodi
65syn keyword mmixOpcode	zsnni zsnzi zsnpi zsevi
66syn keyword mmixOpcode	ldbi ldbui ldwi ldwui
67syn keyword mmixOpcode	ldti ldtui ldoi ldoui
68syn keyword mmixOpcode	ldsfi ldhti cswapi ldunci
69syn keyword mmixOpcode	ldvtsi preldi pregoi goi
70syn keyword mmixOpcode	stbi stbui stwi stwui
71syn keyword mmixOpcode	stti sttui stoi stoui
72syn keyword mmixOpcode	stsfi sthti stcoi stunci
73syn keyword mmixOpcode	syncdi presti syncidi pushgoi
74syn keyword mmixOpcode	ori orni nori xori
75syn keyword mmixOpcode	andi andni nandi nxori
76syn keyword mmixOpcode	bdifi wdifi tdifi odifi
77syn keyword mmixOpcode	muxi saddi mori mxori
78syn keyword mmixOpcode	muli mului divi divui
79
80syn keyword mmixOpcode	flot flotu sflot sflotu
81syn keyword mmixOpcode	mul mulu div divu
82syn keyword mmixOpcode	add addu sub subu
83syn keyword mmixOpcode	2addu 4addu 8addu 16addu
84syn keyword mmixOpcode	cmp cmpu neg negu
85syn keyword mmixOpcode	sl slu sr sru
86syn keyword mmixOpcode	bn bz bp bod
87syn keyword mmixOpcode	bnn bnz bnp bev
88syn keyword mmixOpcode	pbn pbz pbp pbod
89syn keyword mmixOpcode	pbnn pbnz pbnp pbev
90syn keyword mmixOpcode	csn csz csp csod
91syn keyword mmixOpcode	csnn csnz csnp csev
92syn keyword mmixOpcode	zsn zsz zsp zsod
93syn keyword mmixOpcode	zsnn zsnz zsnp zsev
94syn keyword mmixOpcode	ldb ldbu ldw ldwu
95syn keyword mmixOpcode	ldt ldtu ldo ldou
96syn keyword mmixOpcode	ldsf ldht cswap ldunc
97syn keyword mmixOpcode	ldvts preld prego go
98syn keyword mmixOpcode	stb stbu stw stwu
99syn keyword mmixOpcode	stt sttu sto stou
100syn keyword mmixOpcode	stsf stht stco stunc
101syn keyword mmixOpcode	syncd prest syncid pushgo
102syn keyword mmixOpcode	or orn nor xor
103syn keyword mmixOpcode	and andn nand nxor
104syn keyword mmixOpcode	bdif wdif tdif odif
105syn keyword mmixOpcode	mux sadd mor mxor
106
107syn keyword mmixOpcode	seth setmh setml setl inch incmh incml incl
108syn keyword mmixOpcode	orh ormh orml orl andh andmh andml andnl
109syn keyword mmixOpcode	jmp pushj geta put
110syn keyword mmixOpcode	pop resume save unsave sync swym get trip
111syn keyword mmixOpcode	set lda
112
113" switch back to being case sensitive
114syn case match
115
116" general-purpose and special-purpose registers
117syn match mmixRegister		"$[0-9]*"
118syn match mmixRegister		"r[A-Z]"
119syn keyword mmixRegister	rBB rTT rWW rXX rYY rZZ
120
121" Define the default highlighting.
122" For version 5.7 and earlier: only when not done already
123" For version 5.8 and later: only when an item doesn't have highlighting yet
124if version >= 508 || !exists("did_mmix_syntax_inits")
125  if version < 508
126    let did_mmix_syntax_inits = 1
127    command -nargs=+ HiLink hi link <args>
128  else
129    command -nargs=+ HiLink hi def link <args>
130  endif
131
132  " The default methods for highlighting.  Can be overridden later
133  HiLink mmixAt		Type
134  HiLink mmixPseudo	Type
135  HiLink mmixRegister	Special
136  HiLink mmixSegments	Type
137
138  HiLink mmixLabel	Special
139  HiLink mmixComment	Comment
140  HiLink mmixOpcode	Keyword
141
142  HiLink hexNumber	Number
143  HiLink decNumber	Number
144  HiLink octNumber	Number
145
146  HiLink mmixString	String
147  HiLink mmixChar	String
148
149  HiLink mmixType	Type
150  HiLink mmixIdentifier	Normal
151  HiLink mmixSpecialComment Comment
152
153  " My default color overrides:
154  " hi mmixSpecialComment ctermfg=red
155  "hi mmixLabel ctermfg=lightcyan
156  " hi mmixType ctermbg=black ctermfg=brown
157
158  delcommand HiLink
159endif
160
161let b:current_syntax = "mmix"
162
163" vim: ts=8
164