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