blob: 79ca781402e9f3bdfc94e9019be88719016181cf [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: MMIX
3" Maintainer: Dirk Hüsken, <huesken@informatik.uni-tuebingen.de>
Bram Moolenaarc8734422012-06-01 22:38:45 +02004" Last Change: 2012 Jun 01
5" (Dominique Pelle added @Spell)
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" 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 //
Bram Moolenaarc8734422012-06-01 22:38:45 +020010" (preferably %, Knuth-Style)
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
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]\+"
Bram Moolenaarc8734422012-06-01 22:38:45 +020027syn region mmixString start=+"+ skip=+\\"+ end=+"+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000028syn 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
Bram Moolenaarc8734422012-06-01 22:38:45 +020044syn match mmixComment "%.*" contains=@Spell
45syn match mmixComment "//.*" contains=@Spell
46syn match mmixComment "^\*.*" contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000047
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