2 " Language: x86/x64 GNU Disassembler (objdump -d -Mintel)
3 " Maintainer: @shiracamus <shiracamus@gmail.com>
4 " Last Change: 2013 Dec 30
6 " For version 5.x: Clear all syntax items
7 " For version 6.0 and later: Quit when a syntax file was already loaded
10 elseif exists("b:current_syntax")
19 syn match disOffset "[+-]"
20 syn match disNumber "[+-]\?\<0x[0-9a-f]\+\>" contains=disOffset
21 syn match disNumber "[+-]\?\<[0-9a-f]\+\>" contains=disOffset
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
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
33 " SH: Having a function name like "f" leads to labels like "<f>", which shall
34 " not be matched as disNumber.
35 "syn match disLabel "<[a-z0-9_.][a-z0-9_.@+-]*>"hs=s+1,he=e-1 contains=disNumber,disSection
36 syn match disLabel "<[a-z0-9_.][a-z0-9_.@+-]*>"hs=s+1,he=e-1 contains=disSection
37 syn match disHexDump ":\t\([0-9a-f][0-9a-f][ \t]\)\+"hs=s+1
39 syn match disError "<internal disassembler error>"
40 syn match disError "(bad)"
42 syn keyword disTodo contained TODO
44 syn region disComment start="/\*" end="\*/" contains=disTodo
45 syn match disComment "[#;!|].*" contains=disLabel,disTodo
46 syn match disStatement "//.*" contains=cStatement
48 syn match disSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
49 syn region disString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=disSpecial
50 syn region disString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=disSpecial
52 syn match disFormat ": \+file format "
53 syn match disTitle "^[^ ]\+: \+file format .*$" contains=disFormat
55 syn match disMacro "FWORD"
56 syn match disMacro "QWORD"
57 syn match disMacro "DWORD"
58 syn match disMacro "BYTE"
59 syn match disMacro "PTR"
61 syn match disData ".word"
62 syn match disData ".short"
63 syn match disData ".byte"
65 " Opecode matched disNumber
66 syn match disOpecode "\<add "
67 syn match disOpecode "\<adc "
68 syn match disOpecode "\<dec "
69 syn match disOpecode "\<fadd "
73 " Define the default highlighting.
74 " For version 5.7 and earlier: only when not done already
75 " For version 5.8 and later: only when an item doesn't have highlighting yet
76 if version >= 508 || !exists("did_dis_syntax_inits")
78 let did_dis_syntax_inits = 1
79 command -nargs=+ HiLink hi link <args>
81 command -nargs=+ HiLink hi def link <args>
84 " The default methods for highlighting. Can be overridden later
86 HiLink disComment Comment
87 " Constant: String, Character, Number, Boolean, Float
88 HiLink disNumber Number
89 HiLink disString String
90 " Identifier: Function
91 HiLink disHexDump Identifier
92 " Statement: Conditional, Repeat, Label, Operator, Keyword, Exception
93 HiLink disStatement Statement
95 " PreProc: Include, Define, Macro, PreCondit
98 " Type: StorageClass, Structure, Typedef
99 HiLink disRegister StorageClass
100 HiLink disTitle Typedef
101 " Special: SpecialChar, Tag, Delimiter, SpecialComment, Debug
102 HiLink disSpecial SpecialChar
103 HiLink disSection Special
107 HiLink disError Error
114 let b:current_syntax = "dis"
116 let &cpo = s:cpo_save
119 " vim: ts=8 sts=4 sw=2