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