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