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