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