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