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