tasm.vim (5692B)
1 " Vim syntax file 2 " Language: TASM: turbo assembler by Borland 3 " Maintainer: FooLman of United Force <foolman@bigfoot.com> 4 " Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27. 5 6 " quit when a syntax file was already loaded 7 if exists("b:current_syntax") 8 finish 9 endif 10 11 let s:cpo_save = &cpo 12 set cpo&vim 13 14 syn case ignore 15 syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" 16 syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG 17 syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" 18 " CALL extended syntax 19 syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF 20 syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY 21 syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF 22 " IF XXXX 23 syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE 24 syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL 25 syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP 26 "JMP 27 syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL 28 syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL 29 syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS 30 syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS 31 syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN 32 syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC 33 syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE 34 "rept, ret 35 syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD 36 syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE 37 syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT 38 syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF 39 syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG 40 41 syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR 42 syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS 43 syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE 44 syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 45 syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI 46 syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP 47 syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD 48 syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP 49 syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV 50 syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP 51 syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW 52 syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE 53 syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 54 syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI 55 syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X 56 syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS 57 syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP 58 syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT 59 syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL 60 syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH 61 syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC 62 syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD 63 syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR 64 syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR 65 syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB 66 syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW 67 syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD 68 syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ 69 syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD 70 syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW 71 syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD 72 syn keyword tasmMMXinst PXOR 73 "FCMOV 74 syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" 75 syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" 76 syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" 77 syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" 78 syn match tasmRegister "\<[A-D][LH]\>" 79 syn match tasmRegister "\<E\=\([A-D]X\|[SD]I\|[BS]P\)\>" 80 syn match tasmRegister "\<[C-GS]S\>" 81 syn region tasmComment start=";" end="$" 82 "HACK! comment ? ... selection 83 syn region tasmComment start="comment \+\$" end="\$" 84 syn region tasmComment start="comment \+\~" end="\~" 85 syn region tasmComment start="comment \+#" end="#" 86 syn region tasmString start="'" end="'" 87 syn region tasmString start='"' end='"' 88 89 syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" 90 syn match tasmHex "\<[0-9][0-9A-F]*H\>" 91 syn match tasmOct "\<[0-7]\+O\>" 92 syn match tasmBin "\<[01]\+B\>" 93 94 " Define the default highlighting. 95 " Only when an item doesn't have highlighting yet 96 97 hi def link tasmString String 98 hi def link tasmDec Number 99 hi def link tasmHex Number 100 hi def link tasmOct Number 101 hi def link tasmBin Number 102 hi def link tasmInstruction Keyword 103 hi def link tasmCoprocInstr Keyword 104 hi def link tasmMMXInst Keyword 105 hi def link tasmDirective PreProc 106 hi def link tasmRegister Identifier 107 hi def link tasmProctype PreProc 108 hi def link tasmComment Comment 109 hi def link tasmLabel Label 110 111 112 let b:current_syntax = "tasm" 113 114 let &cpo = s:cpo_save 115 unlet s:cpo_save