1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: GNU Assembler 3555cdc2fSBram Moolenaar" Maintainer: Erik Wognsen <[email protected]> 4555cdc2fSBram Moolenaar" Previous maintainer: 5555cdc2fSBram Moolenaar" Kevin Dahlhausen <[email protected]> 6*00a927d6SBram Moolenaar" Last Change: 2010 Apr 18 7*00a927d6SBram Moolenaar 8*00a927d6SBram Moolenaar" Thanks to Ori Avtalion for feedback on the comment markers! 9071d4279SBram Moolenaar 10071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 11555cdc2fSBram Moolenaar" For version 6.0 and later: Quit when a syntax file was already loaded 12071d4279SBram Moolenaarif version < 600 13071d4279SBram Moolenaar syntax clear 14071d4279SBram Moolenaarelseif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar 18071d4279SBram Moolenaarsyn case ignore 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" storage types 21071d4279SBram Moolenaarsyn match asmType "\.long" 22071d4279SBram Moolenaarsyn match asmType "\.ascii" 23071d4279SBram Moolenaarsyn match asmType "\.asciz" 24071d4279SBram Moolenaarsyn match asmType "\.byte" 25071d4279SBram Moolenaarsyn match asmType "\.double" 26071d4279SBram Moolenaarsyn match asmType "\.float" 27071d4279SBram Moolenaarsyn match asmType "\.hword" 28071d4279SBram Moolenaarsyn match asmType "\.int" 29071d4279SBram Moolenaarsyn match asmType "\.octa" 30071d4279SBram Moolenaarsyn match asmType "\.quad" 31071d4279SBram Moolenaarsyn match asmType "\.short" 32071d4279SBram Moolenaarsyn match asmType "\.single" 33071d4279SBram Moolenaarsyn match asmType "\.space" 34071d4279SBram Moolenaarsyn match asmType "\.string" 35071d4279SBram Moolenaarsyn match asmType "\.word" 36071d4279SBram Moolenaar 37071d4279SBram Moolenaarsyn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1 38071d4279SBram Moolenaarsyn match asmIdentifier "[a-z_][a-z0-9_]*" 39071d4279SBram Moolenaar 40071d4279SBram Moolenaar" Various #'s as defined by GAS ref manual sec 3.6.2.1 41071d4279SBram Moolenaar" Technically, the first decNumber def is actually octal, 42071d4279SBram Moolenaar" since the value of 0-7 octal is the same as 0-7 decimal, 43071d4279SBram Moolenaar" I prefer to map it as decimal: 44071d4279SBram Moolenaarsyn match decNumber "0\+[1-7]\=[\t\n$,; ]" 45071d4279SBram Moolenaarsyn match decNumber "[1-9]\d*" 46071d4279SBram Moolenaarsyn match octNumber "0[0-7][0-7]\+" 47071d4279SBram Moolenaarsyn match hexNumber "0[xX][0-9a-fA-F]\+" 48071d4279SBram Moolenaarsyn match binNumber "0[bB][0-1]*" 49071d4279SBram Moolenaar 50*00a927d6SBram Moolenaarsyn keyword asmTodo contained TODO 51*00a927d6SBram Moolenaar 52*00a927d6SBram Moolenaar" GAS supports various comment markers as described here: 53*00a927d6SBram Moolenaar" http://sourceware.org/binutils/docs-2.19/as/Comments.html 54*00a927d6SBram Moolenaar" I have commented out the ARM comment marker "@" by default as I think more 55*00a927d6SBram Moolenaar" people are using "@" with the .type directive. See 56*00a927d6SBram Moolenaar" http://sourceware.org/binutils/docs-2.19/as/Type.html 57*00a927d6SBram Moolenaarsyn region asmComment start="/\*" end="\*/" contains=asmTodo 58*00a927d6SBram Moolenaarsyn match asmComment "[#;!|].*" contains=asmTodo 59*00a927d6SBram Moolenaar" syn match asmComment "@.*" contains=asmTodo 60071d4279SBram Moolenaar 61071d4279SBram Moolenaarsyn match asmInclude "\.include" 62071d4279SBram Moolenaarsyn match asmCond "\.if" 63071d4279SBram Moolenaarsyn match asmCond "\.else" 64071d4279SBram Moolenaarsyn match asmCond "\.endif" 65071d4279SBram Moolenaarsyn match asmMacro "\.macro" 66071d4279SBram Moolenaarsyn match asmMacro "\.endm" 67071d4279SBram Moolenaar 68071d4279SBram Moolenaarsyn match asmDirective "\.[a-z][a-z]\+" 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar 71071d4279SBram Moolenaarsyn case match 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" Define the default highlighting. 74071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 75071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 76071d4279SBram Moolenaarif version >= 508 || !exists("did_asm_syntax_inits") 77071d4279SBram Moolenaar if version < 508 78071d4279SBram Moolenaar let did_asm_syntax_inits = 1 79071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 80071d4279SBram Moolenaar else 81071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 82071d4279SBram Moolenaar endif 83071d4279SBram Moolenaar 84071d4279SBram Moolenaar " The default methods for highlighting. Can be overridden later 85071d4279SBram Moolenaar HiLink asmSection Special 86071d4279SBram Moolenaar HiLink asmLabel Label 87071d4279SBram Moolenaar HiLink asmComment Comment 88*00a927d6SBram Moolenaar HiLink asmTodo Todo 89071d4279SBram Moolenaar HiLink asmDirective Statement 90071d4279SBram Moolenaar 91071d4279SBram Moolenaar HiLink asmInclude Include 92071d4279SBram Moolenaar HiLink asmCond PreCondit 93071d4279SBram Moolenaar HiLink asmMacro Macro 94071d4279SBram Moolenaar 95071d4279SBram Moolenaar HiLink hexNumber Number 96071d4279SBram Moolenaar HiLink decNumber Number 97071d4279SBram Moolenaar HiLink octNumber Number 98071d4279SBram Moolenaar HiLink binNumber Number 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar HiLink asmIdentifier Identifier 101071d4279SBram Moolenaar HiLink asmType Type 102071d4279SBram Moolenaar 103071d4279SBram Moolenaar delcommand HiLink 104071d4279SBram Moolenaarendif 105071d4279SBram Moolenaar 106071d4279SBram Moolenaarlet b:current_syntax = "asm" 107071d4279SBram Moolenaar 108071d4279SBram Moolenaar" vim: ts=8 109