blob: 696e05b4ca092832a6d1b8fbe6f260de8a5512dd [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Flat Assembler (FASM)
3" Maintainer: Ron Aaron <ron@ronware.org>
Bram Moolenaardb7207e2012-02-22 17:30:19 +01004" Last Change: 2012/02/13
Bram Moolenaar071d4272004-06-13 20:20:40 +00005" Vim URL: http://www.vim.org/lang.html
6" FASM Home: http://flatassembler.net/
Bram Moolenaardb7207e2012-02-22 17:30:19 +01007" FASM Version: 1.56
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9if version < 600
10 syntax clear
11elseif exists("b:current_syntax")
12 finish
13endif
14
Bram Moolenaardb7207e2012-02-22 17:30:19 +010015let s:cpo_save = &cpo
16set cpo&vim
17
Bram Moolenaar071d4272004-06-13 20:20:40 +000018setlocal iskeyword=a-z,A-Z,48-57,.,_
19setlocal isident=a-z,A-Z,48-57,.,_
20syn case ignore
21
22syn keyword fasmRegister ah al ax bh bl bp bx ch cl cr0 cr1 cr2 cr3 cr4 cr5 cr6
23syn keyword fasmRegister cr7 cs cx dh di dl dr0 dr1 dr2 dr3 dr4 dr5 dr6 dr7 ds dx
24syn keyword fasmRegister eax ebp ebx ecx edi edx es esi esp fs gs mm0 mm1 mm2 mm3
25syn keyword fasmRegister mm4 mm5 mm6 mm7 si sp ss st st0 st1 st2 st3 st4 st5 st6
26syn keyword fasmRegister st7 tr0 tr1 tr2 tr3 tr4 tr5 tr6 tr7 xmm0 xmm1 xmm2 xmm3
27syn keyword fasmRegister xmm4 xmm5 xmm6 xmm7
28syn keyword fasmAddressSizes byte dqword dword fword pword qword tword word
29syn keyword fasmDataDirectives db dd df dp dq dt du dw file rb rd rf rp rq rt rw
30syn keyword fasmInstr aaa aad aam aas adc add addpd addps addsd addss addsubpd
31syn keyword fasmInstr addsubps and andnpd andnps andpd andps arpl bound bsf bsr
32syn keyword fasmInstr bswap bt btc btr bts call cbw cdq clc cld clflush cli clts
33syn keyword fasmInstr cmc cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl
34syn keyword fasmInstr cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng
35syn keyword fasmInstr cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp
36syn keyword fasmInstr cmovpe cmovpo cmovs cmovz cmp cmpeqpd cmpeqps cmpeqsd cmpeqss
37syn keyword fasmInstr cmplepd cmpleps cmplesd cmpless cmpltpd cmpltps cmpltsd cmpltss
38syn keyword fasmInstr cmpneqpd cmpneqps cmpneqsd cmpneqss cmpnlepd cmpnleps cmpnlesd
39syn keyword fasmInstr cmpnless cmpnltpd cmpnltps cmpnltsd cmpnltss cmpordpd cmpordps
40syn keyword fasmInstr cmpordsd cmpordss cmppd cmpps cmps cmpsb cmpsd cmpss cmpsw
41syn keyword fasmInstr cmpunordpd cmpunordps cmpunordsd cmpunordss cmpxchg cmpxchg8b
42syn keyword fasmInstr comisd comiss cpuid cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps
43syn keyword fasmInstr cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi cvtsd2si cvtsd2ss
44syn keyword fasmInstr cvtsi2sd cvtsi2ss cvtss2sd cvtss2si cvttpd2dq cvttpd2pi cvttps2dq
45syn keyword fasmInstr cvttps2pi cvttsd2si cvttss2si cwd cwde daa das data dec div
46syn keyword fasmInstr divpd divps divsd divss else emms end enter extrn f2xm1 fabs
47syn keyword fasmInstr fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb
48syn keyword fasmInstr fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp
49syn keyword fasmInstr fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree
50syn keyword fasmInstr ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp
51syn keyword fasmInstr finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv
52syn keyword fasmInstr fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi
53syn keyword fasmInstr fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem
54syn keyword fasmInstr fprem1 fptan frndint frstor frstpm fsave fscale fsetpm fsin
55syn keyword fasmInstr fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr
56syn keyword fasmInstr fsubrp ftst fucom fucomi fucomip fucomp fucompp fwait fxam
57syn keyword fasmInstr fxch fxrstor fxsave fxtract fyl2x fyl2xp1 haddpd haddps heap
58syn keyword fasmInstr hlt hsubpd hsubps idiv if imul in inc ins insb insd insw int
59syn keyword fasmInstr int3 into invd invlpg iret iretd iretw ja jae jb jbe jc jcxz
60syn keyword fasmInstr je jecxz jg jge jl jle jmp jna jnae jnb jnbe jnc jne jng jnge
61syn keyword fasmInstr jnl jnle jno jnp jns jnz jo jp jpe jpo js jz lahf lar lddqu
62syn keyword fasmInstr ldmxcsr lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw
63syn keyword fasmInstr load loadall286 loadall386 lock lods lodsb lodsd lodsw loop
64syn keyword fasmInstr loopd loope looped loopew loopne loopned loopnew loopnz loopnzd
65syn keyword fasmInstr loopnzw loopw loopz loopzd loopzw lsl lss ltr maskmovdqu maskmovq
66syn keyword fasmInstr maxpd maxps maxsd maxss mfence minpd minps minsd minss monitor
67syn keyword fasmInstr mov movapd movaps movd movddup movdq2q movdqa movdqu movhlps
68syn keyword fasmInstr movhpd movhps movlhps movlpd movlps movmskpd movmskps movntdq
69syn keyword fasmInstr movnti movntpd movntps movntq movq movq2dq movs movsb movsd
70syn keyword fasmInstr movshdup movsldup movss movsw movsx movupd movups movzx mul
71syn keyword fasmInstr mulpd mulps mulsd mulss mwait neg nop not or org orpd orps
72syn keyword fasmInstr out outs outsb outsd outsw packssdw packsswb packuswb paddb
73syn keyword fasmInstr paddd paddq paddsb paddsw paddusb paddusw paddw pand pandn
74syn keyword fasmInstr pause pavgb pavgusb pavgw pcmpeqb pcmpeqd pcmpeqw pcmpgtb
75syn keyword fasmInstr pcmpgtd pcmpgtw pextrw pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge
76syn keyword fasmInstr pfcmpgt pfmax pfmin pfmul pfnacc pfpnacc pfrcp pfrcpit1 pfrcpit2
77syn keyword fasmInstr pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pi2fw pinsrw pmaddwd pmaxsw
78syn keyword fasmInstr pmaxub pminsw pminub pmovmskb pmulhrw pmulhuw pmulhw pmullw
79syn keyword fasmInstr pmuludq pop popa popad popaw popd popf popfd popfw popw por
80syn keyword fasmInstr prefetch prefetchnta prefetcht0 prefetcht1 prefetcht2 prefetchw
81syn keyword fasmInstr psadbw pshufd pshufhw pshuflw pshufw pslld pslldq psllq psllw
82syn keyword fasmInstr psrad psraw psrld psrldq psrlq psrlw psubb psubd psubq psubsb
83syn keyword fasmInstr psubsw psubusb psubusw psubw pswapd punpckhbw punpckhdq punpckhqdq
84syn keyword fasmInstr punpckhwd punpcklbw punpckldq punpcklqdq punpcklwd push pusha
85syn keyword fasmInstr pushad pushaw pushd pushf pushfd pushfw pushw pxor rcl rcpps
86syn keyword fasmInstr rcpss rcr rdmsr rdpmc rdtsc rep repe repne repnz repz ret
87syn keyword fasmInstr retd retf retfd retfw retn retnd retnw retw rol ror rsm rsqrtps
88syn keyword fasmInstr rsqrtss sahf sal salc sar sbb scas scasb scasd scasw seta
89syn keyword fasmInstr setae setalc setb setbe setc sete setg setge setl setle setna
90syn keyword fasmInstr setnae setnb setnbe setnc setne setng setnge setnl setnle
91syn keyword fasmInstr setno setnp setns setnz seto setp setpe setpo sets setz sfence
92syn keyword fasmInstr sgdt shl shld shr shrd shufpd shufps sidt sldt smsw sqrtpd
93syn keyword fasmInstr sqrtps sqrtsd sqrtss stc std sti stmxcsr store stos stosb
94syn keyword fasmInstr stosd stosw str sub subpd subps subsd subss sysenter sysexit
95syn keyword fasmInstr test ucomisd ucomiss ud2 unpckhpd unpckhps unpcklpd unpcklps
96syn keyword fasmInstr verr verw wait wbinvd wrmsr xadd xchg xlat xlatb xor xorpd
97syn keyword fasmPreprocess common equ fix forward include local macro purge restore
98syn keyword fasmPreprocess reverse struc
99syn keyword fasmDirective align binary code coff console discardable display dll
100syn keyword fasmDirective elf entry executable export extern far fixups format gui
101syn keyword fasmDirective import label ms mz native near notpageable pe public readable
102syn keyword fasmDirective repeat resource section segment shareable stack times
Bram Moolenaardb7207e2012-02-22 17:30:19 +0100103syn keyword fasmDirective use16 use32 virtual wdm writable writeable
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104syn keyword fasmOperator as at defined eq eqtype from mod on ptr rva used
105
106syn match fasmNumericOperator "[+-/*]"
107syn match fasmLogicalOperator "[=|&~<>]\|<=\|>=\|<>"
108" numbers
109syn match fasmBinaryNumber "\<[01]\+b\>"
110syn match fasmHexNumber "\<\d\x*h\>"
111syn match fasmHexNumber "\<\(0x\|$\)\x*\>"
112syn match fasmFPUNumber "\<\d\+\(\.\d*\)\=\(e[-+]\=\d*\)\=\>"
113syn match fasmOctalNumber "\<\(0\o\+o\=\|\o\+o\)\>"
114syn match fasmDecimalNumber "\<\(0\|[1-9]\d*\)\>"
115syn region fasmComment start=";" end="$"
116syn region fasmString start="\"" end="\"\|$"
117syn region fasmString start="'" end="'\|$"
118syn match fasmSymbol "[()|\[\]:]"
119syn match fasmSpecial "[#?%$,]"
120syn match fasmLabel "^\s*[^; \t]\+:"
121
122hi def link fasmAddressSizes type
123hi def link fasmNumericOperator fasmOperator
124hi def link fasmLogicalOperator fasmOperator
125
126hi def link fasmBinaryNumber fasmNumber
127hi def link fasmHexNumber fasmNumber
128hi def link fasmFPUNumber fasmNumber
129hi def link fasmOctalNumber fasmNumber
130hi def link fasmDecimalNumber fasmNumber
131
132hi def link fasmSymbols fasmRegister
133hi def link fasmPreprocess fasmDirective
134
135" link to standard syn groups so the 'colorschemes' work:
136hi def link fasmOperator operator
137hi def link fasmComment comment
138hi def link fasmDirective preproc
139hi def link fasmRegister type
140hi def link fasmNumber constant
141hi def link fasmSymbol structure
142hi def link fasmString String
143hi def link fasmSpecial special
144hi def link fasmInstr keyword
145hi def link fasmLabel label
146hi def link fasmPrefix preproc
147let b:current_syntax = "fasm"
Bram Moolenaardb7207e2012-02-22 17:30:19 +0100148
149let &cpo = s:cpo_save
150unlet s:cpo_save
151
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152" vim: ts=8 sw=8 :