Add dis syntax
[vimconf.git] / syntax / dis.vim
1 " Vim syntax file
2 " Language: x86/x64 GNU Disassembler (objdump -d -Mintel)
3 " Maintainer: @shiracamus <shiracamus@gmail.com>
4 " Last Change: 2013 Dec 30
5
6 " For version 5.x: Clear all syntax items
7 " For version 6.0 and later: Quit when a syntax file was already loaded
8 if version < 600
9 syntax clear
10 elseif exists("b:current_syntax")
11 finish
12 endif
13
14 let s:cpo_save = &cpo
15 set cpo&vim
16
17 syn case ignore
18
19 syn match disOffset "[+-]"
20 syn match disNumber "[+-]\?\<0x[0-9a-f]\+\>" contains=disOffset
21 syn match disNumber "[+-]\?\<[0-9a-f]\+\>" contains=disOffset
22
23 syn match disRegister "\<[re]\?[abcd][xhl]\>"
24 syn match disRegister "\<[re]\?[sd]il\?\>"
25 syn match disRegister "\<[re]\?[sbi]pl\?\>"
26 syn match disRegister "\<r[0-9]\+[dwb]\?\>"
27 syn match disRegister "[^\t]\<[cdefgs]s\>"hs=s+1
28
29 syn match disAt "@"
30 syn match disSection " \.[a-z][a-z_\.-]*:"he=e-1
31 syn match disSection "@[a-z0-9_][a-z0-9_-]\+"hs=s+1 contains=disAt,disNumber
32
33 syn match disLabel "<[a-z0-9_.][a-z0-9_.@+-]\+>"hs=s+1,he=e-1 contains=disNumber,disSection
34 syn match disHexDump ":\t\([0-9a-f][0-9a-f][ \t]\)\+"hs=s+1
35
36 syn match disError "<internal disassembler error>"
37 syn match disError "(bad)"
38
39 syn keyword disTodo contained TODO
40
41 syn region disComment start="/\*" end="\*/" contains=disTodo
42 syn match disComment "[#;!|].*" contains=disLabel,disTodo
43 syn match disStatement "//.*" contains=cStatement
44
45 syn match disSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
46 syn region disString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=disSpecial
47 syn region disString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=disSpecial
48
49 syn match disFormat ": \+file format "
50 syn match disTitle "^[^ ]\+: \+file format .*$" contains=disFormat
51
52 syn match disMacro "FWORD"
53 syn match disMacro "QWORD"
54 syn match disMacro "DWORD"
55 syn match disMacro "BYTE"
56 syn match disMacro "PTR"
57
58 syn match disData ".word"
59 syn match disData ".short"
60 syn match disData ".byte"
61
62 " Opecode matched disNumber
63 syn match disOpecode "\<add "
64 syn match disOpecode "\<adc "
65 syn match disOpecode "\<dec "
66 syn match disOpecode "\<fadd "
67
68 syn case match
69
70 " Define the default highlighting.
71 " For version 5.7 and earlier: only when not done already
72 " For version 5.8 and later: only when an item doesn't have highlighting yet
73 if version >= 508 || !exists("did_dis_syntax_inits")
74 if version < 508
75 let did_dis_syntax_inits = 1
76 command -nargs=+ HiLink hi link <args>
77 else
78 command -nargs=+ HiLink hi def link <args>
79 endif
80
81 " The default methods for highlighting. Can be overridden later
82 " Comment
83 HiLink disComment Comment
84 " Constant: String, Character, Number, Boolean, Float
85 HiLink disNumber Number
86 HiLink disString String
87 " Identifier: Function
88 HiLink disHexDump Identifier
89 " Statement: Conditional, Repeat, Label, Operator, Keyword, Exception
90 HiLink disStatement Statement
91 HiLink disLabel Label
92 " PreProc: Include, Define, Macro, PreCondit
93 HiLink disData Define
94 HiLink disMacro Macro
95 " Type: StorageClass, Structure, Typedef
96 HiLink disRegister StorageClass
97 HiLink disTitle Typedef
98 " Special: SpecialChar, Tag, Delimiter, SpecialComment, Debug
99 HiLink disSpecial SpecialChar
100 HiLink disSection Special
101 " Underlined
102 " Ignore
103 " Error
104 HiLink disError Error
105 " Todo
106 HiLink disTodo Todo
107
108 delcommand HiLink
109 endif
110
111 let b:current_syntax = "dis"
112
113 let &cpo = s:cpo_save
114 unlet s:cpo_save
115
116 " vim: ts=8 sts=4 sw=2