1 # Define SciTE settings for Assembler files (IA32 MASM and NASM)
2 # Originally by Black Horus blackhorus@gmx.net 2002
3 # Updated by Kein-Hong Man mkh@pl.jaring.my 2003-10
6 file.patterns.asm=*.asm
7 filter.asm=Assembler (asm)|$(file.patterns.asm)|
9 lexer.$(file.patterns.asm)=asm
11 # these keywords are taken from the masm book (v6.13)
12 # updated with Intel Pentium 4, MMX, SSE, SSE2 instructions from NASM
13 # (note that some are undocumented instructions)
15 cpu_instruction=aaa aad aam aas adc add and call cbw \
16 clc cld cli cmc cmp cmps cmpsb cmpsw cwd daa das dec div esc hlt \
17 idiv imul in inc int into iret ja jae jb jbe jc jcxz je jg jge jl \
18 jle jmp jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns \
19 jnz jo jp jpe jpo js jz lahf lds lea les lods lodsb lodsw loop \
20 loope loopew loopne loopnew loopnz loopnzw loopw loopz loopzw \
21 mov movs movsb movsw mul neg nop not or out pop popf push pushf \
22 rcl rcr ret retf retn rol ror sahf sal sar sbb scas scasb scasw \
23 shl shr stc std sti stos stosb stosw sub test wait xchg xlat \
25 bound enter ins insb insw leave outs outsb outsw popa pusha pushw \
26 arpl lar lsl sgdt sidt sldt smsw str verr verw clts lgdt lidt lldt lmsw ltr \
27 bsf bsr bt btc btr bts cdq cmpsd cwde insd iretd iretdf iretf \
28 jecxz lfs lgs lodsd loopd looped loopned loopnzd loopzd lss \
29 movsd movsx movzx outsd popad popfd pushad pushd pushfd scasd seta \
30 setae setb setbe setc sete setg setge setl setle setna setnae setnb \
31 setnbe setnc setne setng setnge setnl setnle setno setnp setns \
32 setnz seto setp setpe setpo sets setz shld shrd stosd \
33 bswap cmpxchg invd invlpg wbinvd xadd \
34 lock rep repe repne repnz repz
36 # these are mostly non-MMX/SSE/SSE2 486+ instructions
38 cpu_instruction2=cflush cpuid emms femms \
39 cmovo cmovno cmovb cmovc cmovnae cmovae cmovnb cmovnc \
40 cmove cmovz cmovne cmovnz cmovbe cmovna cmova cmovnbe \
41 cmovs cmovns cmovp cmovpe cmovnp cmovpo cmovl cmovnge \
42 cmovge cmovnl cmovle cmovng cmovg cmovnle \
43 cmpxchg486 cmpxchg8b \
44 loadall loadall286 ibts icebp int1 int3 int01 int03 iretw \
45 popaw popfw pushaw pushfw rdmsr rdpmc rdshr rdtsc \
46 rsdc rsldt rsm rsts salc smi smint smintold svdc svldt svts \
47 syscall sysenter sysexit sysret ud0 ud1 ud2 umov xbts wrmsr wrshr
49 # fpu instructions, updated for 486+
51 fpu_instruction=f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcom fcomp fcompp fdecstp \
52 fdisi fdiv fdivp fdivr fdivrp feni ffree fiadd ficom ficomp fidiv \
53 fidivr fild fimul fincstp finit fist fistp fisub fisubr fld fld1 \
54 fldcw fldenv fldenvw fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul \
55 fmulp fnclex fndisi fneni fninit fnop fnsave fnsavew fnstcw fnstenv \
56 fnstenvw fnstsw fpatan fprem fptan frndint frstor frstorw fsave \
57 fsavew fscale fsqrt fst fstcw fstenv fstenvw fstp fstsw fsub fsubp \
58 fsubr fsubrp ftst fwait fxam fxch fxtract fyl2x fyl2xp1 \
59 fsetpm fcos fldenvd fnsaved fnstenvd fprem1 frstord fsaved fsin fsincos \
60 fstenvd fucom fucomp fucompp fcomi fcomip ffreep \
61 fcmovb fcmove fcmovbe fcmovu fcmovnb fcmovne fcmovnbe fcmovnu
63 # these are MMX, SSE, SSE2 instructions
65 ext_instruction=addpd addps addsd addss andpd andps andnpd andnps \
66 cmpeqpd cmpltpd cmplepd cmpunordpd cmpnepd cmpnltpd cmpnlepd cmpordpd \
67 cmpeqps cmpltps cmpleps cmpunordps cmpneps cmpnltps cmpnleps cmpordps \
68 cmpeqsd cmpltsd cmplesd cmpunordsd cmpnesd cmpnltsd cmpnlesd cmpordsd \
69 cmpeqss cmpltss cmpless cmpunordss cmpness cmpnltss cmpnless cmpordss \
70 comisd comiss cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps \
71 cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi cvtss2sd cvtss2si \
72 cvtsd2si cvtsd2ss cvtsi2sd cvtsi2ss \
73 cvttpd2dq cvttpd2pi cvttps2dq cvttps2pi cvttsd2si cvttss2si \
74 divpd divps divsd divss fxrstor fxsave ldmxscr lfence mfence \
75 maskmovdqu maskmovdq maxpd maxps paxsd maxss minpd minps minsd minss \
76 movapd movaps movdq2q movdqa movdqu movhlps movhpd movhps movd movq \
77 movlhps movlpd movlps movmskpd movmskps movntdq movnti movntpd movntps \
78 movntq movq2dq movsd movss movupd movups mulpd mulps mulsd mulss \
79 orpd orps packssdw packsswb packuswb paddb paddsb paddw paddsw \
80 paddd paddsiw paddq paddusb paddusw pand pandn pause paveb pavgb pavgw \
81 pavgusb pdistib pextrw pcmpeqb pcmpeqw pcmpeqd pcmpgtb pcmpgtw pcmpgtd \
82 pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul \
83 pmachriw pmaddwd pmagw pmaxsw pmaxub pminsw pminub pmovmskb \
84 pmulhrwc pmulhriw pmulhrwa pmulhuw pmulhw pmullw pmuludq \
85 pmvzb pmvnzb pmvlzb pmvgezb pfnacc pfpnacc por prefetch prefetchw \
86 prefetchnta prefetcht0 prefetcht1 prefetcht2 pfrcp pfrcpit1 pfrcpit2 \
87 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pf2iw pinsrw psadbw pshufd \
88 pshufhw pshuflw pshufw psllw pslld psllq pslldq psraw psrad \
89 psrlw psrld psrlq psrldq psubb psubw psubd psubq psubsb psubsw \
90 psubusb psubusw psubsiw pswapd punpckhbw punpckhwd punpckhdq punpckhqdq \
91 punpcklbw punpcklwd punpckldq punpcklqdq pxor rcpps rcpss \
92 rsqrtps rsqrtss sfence shufpd shufps sqrtpd sqrtps sqrtsd sqrtss \
93 stmxcsr subpd subps subsd subss ucomisd ucomiss \
94 unpckhpd unpckhps unpcklpd unpcklps xorpd xorps
96 register=ah al ax bh bl bp bx ch cl cr0 cr2 cr3 cr4 cs \
97 cx dh di dl dr0 dr1 dr2 dr3 dr6 dr7 ds dx eax ebp ebx ecx edi edx \
98 es esi esp fs gs si sp ss st tr3 tr4 tr5 tr6 tr7 \
99 st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 \
100 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7
104 directive=.186 .286 .286c .286p .287 .386 .386c .386p .387 .486 .486p \
105 .8086 .8087 .alpha .break .code .const .continue .cref .data .data? \
106 .dosseg .else .elseif .endif .endw .err .err1 .err2 .errb \
107 .errdef .errdif .errdifi .erre .erridn .erridni .errnb .errndef \
108 .errnz .exit .fardata .fardata? .if .lall .lfcond .list .listall \
109 .listif .listmacro .listmacroall .model .no87 .nocref .nolist \
110 .nolistif .nolistmacro .radix .repeat .sall .seq .sfcond .stack \
111 .startup .tfcond .type .until .untilcxz .while .xall .xcref \
112 .xlist alias align assume catstr comm comment db dd df dosseg dq \
113 dt dup dw echo else elseif elseif1 elseif2 elseifb elseifdef elseifdif \
114 elseifdifi elseife elseifidn elseifidni elseifnb elseifndef end \
115 endif endm endp ends eq equ even exitm extern externdef extrn for \
116 forc ge goto group gt high highword if if1 if2 ifb ifdef ifdif \
117 ifdifi ife ifidn ifidni ifnb ifndef include includelib instr invoke \
118 irp irpc label le length lengthof local low lowword lroffset \
119 lt macro mask mod .msfloat name ne offset opattr option org %out \
120 page popcontext proc proto ptr public purge pushcontext record \
121 repeat rept seg segment short size sizeof sizestr struc struct \
122 substr subtitle subttl textequ this title type typedef union while width
124 directive_operand=$ ? @b @f addr basic byte c carry? dword \
125 far far16 fortran fword near near16 overflow? parity? pascal qword \
126 real4 real8 real10 sbyte sdword sign? stdcall sword syscall tbyte \
127 vararg word zero? flat near32 far32 \
128 abs all assumes at casemap common compact \
129 cpu dotname emulator epilogue error export expr16 expr32 farstack flat \
130 forceframe huge language large listing ljmp loadds m510 medium memory \
131 nearstack nodotname noemulator nokeyword noljmp nom510 none nonunique \
132 nooldmacros nooldstructs noreadonly noscoped nosignextend nothing \
133 notpublic oldmacros oldstructs os_dos para private prologue radix \
134 readonly req scoped setif2 smallstack tiny use16 use32 uses \
136 # nasm directives, mostly complete, does not parse properly
137 # the following: %!<env>, %%, %+, %+n %-n, %{n}
139 directive_nasm=db dw dd dq dt resb resw resd resq rest incbin equ times \
140 %define %idefine %xdefine %xidefine %undef %assign %iassign \
141 %strlen %substr %macro %imacro %endmacro %rotate .nolist \
142 %if %elif %else %endif %ifdef %ifndef %elifdef %elifndef \
143 %ifmacro %ifnmacro %elifmacro %elifnmacro %ifctk %ifnctk %elifctk %elifnctk \
144 %ifidn %ifnidn %elifidn %elifnidn %ifidni %ifnidni %elifidni %elifnidni \
145 %ifid %ifnid %elifid %elifnid %ifstr %ifnstr %elifstr %elifnstr \
146 %ifnum %ifnnum %elifnum %elifnnum %error %rep %endrep %exitrep \
147 %include %push %pop %repl struct endstruc istruc at iend align alignb \
148 %arg %stacksize %local %line \
149 bits use16 use32 section absolute extern global common cpu org \
150 section group import export
152 directive_operand_nasm=a16 a32 o16 o32 byte word dword nosplit $ $$ seq wrt \
153 flat large small .text .data .bss near far \
154 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
157 keywords.$(file.patterns.asm)=$(cpu_instruction) $(cpu_instruction2)
158 keywords2.$(file.patterns.asm)=$(fpu_instruction)
159 keywords3.$(file.patterns.asm)=$(register)
160 keywords4.$(file.patterns.asm)=$(directive) $(directive_nasm)
161 keywords5.$(file.patterns.asm)=$(directive_operand) $(directive_operand_nasm)
162 keywords6.$(file.patterns.asm)=$(ext_instruction)
168 style.asm.32=fore:#808080,font:Verdana,size:8
172 style.asm.1=fore:#adadad
173 #$(colour.code.comment.line),font:Comic Sans MS,size:8
175 style.asm.2=fore:#ff0000
177 style.asm.3=$(colour.string)
179 style.asm.4=$(colour.operator),bold
183 style.asm.6=$(colour.keyword),bold
186 style.asm.7=fore:#0000ff
188 style.asm.8=fore:#46aa03,bold
189 # assembler Directive
190 style.asm.9=fore:#0000ff
191 # assembler Directive Operand
192 style.asm.10=fore:#0000ff
193 # Comment block (GNU as /*...*/ syntax, unimplemented)
194 style.asm.11=$(colour.code.comment.box),$(font.code.comment.box)
195 # Character/String (single quote) (also character prefix in GNU as)
196 style.asm.12=$(colour.char)
197 # End of line where string is not closed
198 style.asm.13=fore:#000000,back:#E0C0E0,eolfilled
199 # Extended instructions
200 style.asm.14=fore:#B00040
203 command.compile.$(file.patterns.asm)=masm $(FileNameExt)
205 command.name.0.*.asm=Link
206 command.0.*.asm=link $(FileName)
209 statement.indent.$(file.patterns.asm)=9 .if
210 statement.end.$(file.patterns.asm)=9 .endif