<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- "Intel x86 (FASM)" is based on ver. 1.3 of "Intel x86 (NASM)" by Nicola Gigante and Bogdan Drozdowski Known issues: * Does not include all 64-bit registers and instructions * "near" and "far" as in "jmp near MyLabel" is unhandeled. * Confuses and,or,not,xor,shl instructions,with operators with same name, e.g. "2 shl 4" * May confuse ah,bh,ch,dh with hexadecimal numbers. Notes: * "used" and "defined" are treated opperators and are not highlighted. --> <language name="Intel x86 (FASM)" section="Assembler" version="0.2" kateversion="2.3" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL"> <highlighting> <list name="registers"> <!-- General purpose registers --> <item>rax</item> <item>eax</item> <item>ax</item> <item>ah</item> <item>al</item> <item>rbx</item> <item>ebx</item> <item>bx</item> <item>bh</item> <item>bl</item> <item>rcx</item> <item>ecx</item> <item>cx</item> <item>ch</item> <item>cl</item> <item>rdx</item> <item>edx</item> <item>dx</item> <item>dh</item> <item>dl</item> <item>rbp</item> <item>ebp</item> <item>bp</item> <item>rsi</item> <item>esi</item> <item>si</item> <item>rdi</item> <item>edi</item> <item>di</item> <item>rsp</item> <item>esp</item> <item>sp</item> <item>r8</item> <item>r9</item> <item>r10</item> <item>r11</item> <item>r12</item> <item>r13</item> <item>r14</item> <item>r15</item> <!-- Segmentation registers --> <item>cs</item> <item>ds</item> <item>es</item> <item>fs</item> <item>gs</item> <item>ss</item> <!-- Control registers --> <item>cr0</item> <!--<item>cr1</item>--> <item>cr2</item> <item>cr3</item> <item>cr4</item> <!-- Debug registers --> <item>dr0</item> <item>dr1</item> <item>dr2</item> <item>dr3</item> <item>dr6</item> <item>dr7</item> <!-- x87 FPU Registers --> <item>st</item> <!-- MMX registers --> <item>mm0</item> <item>mm1</item> <item>mm2</item> <item>mm3</item> <item>mm4</item> <item>mm5</item> <item>mm6</item> <item>mm7</item> <!-- XMM registers --> <item>xmm0</item> <item>xmm1</item> <item>xmm2</item> <item>xmm3</item> <item>xmm4</item> <item>xmm5</item> <item>xmm6</item> <item>xmm7</item> </list> <list name="instructions"> <item>aaa</item> <item>aad</item> <item>aam</item> <item>aas</item> <item>adc</item> <item>add</item> <item>addpd</item> <item>addps</item> <item>addsd</item> <item>addss</item> <item>addsubpd</item> <item>addsubps</item> <item>and</item> <item>andnpd</item> <item>andnps</item> <item>andpd</item> <item>andps</item> <item>arpl</item> <item>bound</item> <item>bsf</item> <item>bsr</item> <item>bswap</item> <item>bt</item> <item>btc</item> <item>btr</item> <item>bts</item> <item>call</item> <item>cbw</item> <item>cwde</item> <item>cwd</item> <item>cdq</item> <item>cdqe</item> <item>cqo</item> <item>clc</item> <item>cld</item> <item>clgi</item> <item>cli</item> <item>clts</item> <item>clflush</item> <item>cmc</item> <item>cmova</item> <item>cmovae</item> <item>cmovb</item> <item>cmovbe</item> <item>cmovc</item> <item>cmove</item> <item>cmovg</item> <item>cmovge</item> <item>cmovl</item> <item>cmovle</item> <item>cmovna</item> <item>cmovnae</item> <item>cmovnb</item> <item>cmovnbe</item> <item>cmovnc</item> <item>cmovne</item> <item>cmovng</item> <item>cmovnge</item> <item>cmovnl</item> <item>cmovnle</item> <item>cmovno</item> <item>cmovnp</item> <item>cmovns</item> <item>cmovnz</item> <item>cmovo</item> <item>cmovp</item> <item>cmovpe</item> <item>cmovpo</item> <item>cmovs</item> <item>cmovz</item> <item>cmp</item> <item>cmpeqpd</item> <item>cmpeqps</item> <item>cmpeqsd</item> <item>cmpeqss</item> <item>cmplepd</item> <item>cmpleps</item> <item>cmplesd</item> <item>cmpless</item> <item>cmpltpd</item> <item>cmpltps</item> <item>cmpltsd</item> <item>cmpltss</item> <item>cmpneqpd</item> <item>cmpneqps</item> <item>cmpneqsd</item> <item>cmpneqss</item> <item>cmpnlepd</item> <item>cmpnleps</item> <item>cmpnlesd</item> <item>cmpnless</item> <item>cmpnltpd</item> <item>cmpnltps</item> <item>cmpnltsd</item> <item>cmpnltss</item> <item>cmpordpd</item> <item>cmpordps</item> <item>cmpordsd</item> <item>cmpordss</item> <item>cmppd</item> <item>cmpps</item> <item>cmps</item> <item>cmpsb</item> <item>cmpsd</item> <item>cmpss</item> <item>cmpsw</item> <item>cmpunordpd</item> <item>cmpunordps</item> <item>cmpunordsd</item> <item>cmpunordss</item> <item>cmpxchg</item> <item>cmpxchg486</item> <item>cmpxchg8b</item> <item>cmpxchg16b</item> <item>comisd</item> <item>comiss</item> <item>cpuid</item> <item>cvtdq2pd</item> <item>cvtdq2ps</item> <item>cvtpd2dq</item> <item>cvtpd2pi</item> <item>cvtpd2ps</item> <item>cvtpi2pd</item> <item>cvtpi2ps</item> <item>cvtps2dq</item> <item>cvtps2pd</item> <item>cvtps2pi</item> <item>cvtsd2si</item> <item>cvtsd2ss</item> <item>cvtsi2sd</item> <item>cvtsi2ss</item> <item>cvtss2sd</item> <item>cvtss2si</item> <item>cvttpd2dq</item> <item>cvttpd2pi</item> <item>cvttps2dq</item> <item>cvttps2pi</item> <item>cvttsd2si</item> <item>cvttss2si</item> <item>daa</item> <item>das</item> <item>dec</item> <item>div</item> <item>divpd</item> <item>divps</item> <item>divsd</item> <item>divss</item> <item>emms</item> <item>enter</item> <item>f2xm1</item> <item>fabs</item> <item>fadd</item> <item>faddp</item> <item>fbld</item> <item>fbstp</item> <item>fchs</item> <item>fclex</item> <item>fnclex</item> <item>fcmovb</item> <item>fcmovbe</item> <item>fcmove</item> <item>fcmovnb</item> <item>fcmovnbe</item> <item>fcmovne</item> <item>fcmovnu</item> <item>fcmovu</item> <item>fcom</item> <item>fcomp</item> <item>fcompp</item> <item>fcomi</item> <item>fcomip</item> <item>fcos</item> <item>fdecstp</item> <item>fdisi</item> <item>feni</item> <item>fdiv</item> <item>fdivr</item> <item>fdivp</item> <item>fdivrp</item> <item>femms</item> <item>ffree</item> <item>ffreep</item> <item>fiadd</item> <item>ficom</item> <item>ficomp</item> <item>fidiv</item> <item>fidivr</item> <item>fild</item> <item>fimul</item> <item>fincstp</item> <item>finit</item> <item>fist</item> <item>fistp</item> <item>fisttp</item> <item>fisub</item> <item>fisubr</item> <item>fld</item> <item>fld1</item> <item>fldl2e</item> <item>fldl2t</item> <item>fldlg2</item> <item>fldln2</item> <item>fldcw</item> <item>fldenv</item> <item>fldpi</item> <item>fldz</item> <item>fmul</item> <item>fmulp</item> <item>fndisi</item> <item>fneni</item> <item>fninit</item> <item>fnop</item> <item>fnsave</item> <item>fnstcw</item> <item>fnstenv</item> <item>fnstsw</item> <item>fnwait</item> <item>fpatan</item> <item>fptan</item> <item>fprem</item> <item>fprem1</item> <item>frndint</item> <item>frstor</item> <item>fsave</item> <item>fscale</item> <item>fsetpm</item> <item>fsin</item> <item>fsincos</item> <item>fsqrt</item> <item>fst</item> <item>fstp</item> <item>fstcw</item> <item>fstenv</item> <item>fstsw</item> <item>fsub</item> <item>fsubr</item> <item>fsubp</item> <item>fsubrp</item> <item>ftst</item> <item>fucom</item> <item>fucomp</item> <item>fucompp</item> <item>fucomi</item> <item>fucomip</item> <item>fwait</item> <item>fxam</item> <item>fxch</item> <item>fxrstor</item> <item>fxsave</item> <item>fxtract</item> <item>fyl2x</item> <item>fyl2xp1</item> <item>haddpd</item> <item>haddps</item> <item>hlt</item> <item>hsubpd</item> <item>hsubps</item> <item>ibts</item> <item>idiv</item> <item>imul</item> <item>in</item> <item>inc</item> <item>ins</item> <item>insb</item> <item>insd</item> <item>insw</item> <item>int</item> <item>int1</item> <item>int3</item> <item>into</item> <item>invd</item> <item>invlpg</item> <item>invlpga</item> <item>iret</item> <item>iretd</item> <item>iretq</item> <item>iretw</item> <item>ja</item> <item>jae</item> <item>jb</item> <item>jbe</item> <item>jc</item> <item>je</item> <item>jg</item> <item>jge</item> <item>jl</item> <item>jle</item> <item>jna</item> <item>jnae</item> <item>jnb</item> <item>jnbe</item> <item>jnc</item> <item>jne</item> <item>jng</item> <item>jnge</item> <item>jnl</item> <item>jnle</item> <item>jno</item> <item>jnp</item> <item>jns</item> <item>jnz</item> <item>jo</item> <item>jp</item> <item>jpe</item> <item>jpo</item> <item>js</item> <item>jz</item> <item>jcxz</item> <item>jecxz</item> <item>jrcxz</item> <item>jmp</item> <item>lahf</item> <item>lar</item> <item>lddqu</item> <item>ldmxcsr</item> <item>lds</item> <item>les</item> <item>lea</item> <item>leave</item> <item>lfence</item> <item>lfs</item> <item>lgdt</item> <item>lgs</item> <item>lidt</item> <item>lldt</item> <item>lmsw</item> <item>loadall</item> <item>loadall286</item> <item>lods</item> <item>lodsb</item> <item>lodsd</item> <item>lodsq</item> <item>lodsw</item> <item>loop</item> <item>loope</item> <item>loopne</item> <item>loopnz</item> <item>loopz</item> <item>lsl</item> <item>lss</item> <item>ltr</item> <item>maskmovdqu</item> <item>maskmovq</item> <item>maxpd</item> <item>maxps</item> <item>maxsd</item> <item>maxss</item> <item>mfence</item> <item>minpd</item> <item>minps</item> <item>minsd</item> <item>minss</item> <item>monitor</item> <item>mov</item> <item>movapd</item> <item>movaps</item> <item>movd</item> <item>movddup</item> <item>movdq2q</item> <item>movdqa</item> <item>movdqu</item> <item>movhlps</item> <item>movhpd</item> <item>movhps</item> <item>movlhps</item> <item>movlpd</item> <item>movlps</item> <item>movmskpd</item> <item>movmskps</item> <item>movntdq</item> <item>movnti</item> <item>movntpd</item> <item>movntps</item> <item>movntq</item> <item>movq</item> <item>movq2dq</item> <item>movs</item> <item>movsb</item> <item>movsd</item> <item>movshdup</item> <item>movsldup</item> <item>movsq</item> <item>movss</item> <item>movsx</item> <item>movsxd</item> <item>movsw</item> <item>movupd</item> <item>movups</item> <item>movzx</item> <item>mul</item> <item>mulpd</item> <item>mulps</item> <item>mulsd</item> <item>mulss</item> <item>mwait</item> <item>neg</item> <item>nop</item> <item>not</item> <item>or</item> <item>orpd</item> <item>orps</item> <item>out</item> <item>outs</item> <item>outsb</item> <item>outsw</item> <item>outsd</item> <item>packssdw</item> <item>packsswb</item> <item>packuswb</item> <item>paddb</item> <item>paddd</item> <item>paddq</item> <item>paddsb</item> <item>paddsw</item> <item>paddusb</item> <item>paddusw</item> <item>paddw</item> <item>pand</item> <item>pandn</item> <item>pause</item> <item>pavgb</item> <item>pavgusb</item> <item>pavgw</item> <item>pcmpeqb</item> <item>pcmpeqw</item> <item>pcmpeqd</item> <item>pcmpgtb</item> <item>pcmpgtw</item> <item>pcmpgtd</item> <item>pdistib</item> <item>pextrw</item> <item>pf2id</item> <item>pf2iw</item> <item>pfacc</item> <item>pfadd</item> <item>pfcmpeq</item> <item>pfcmpge</item> <item>pfcmpgt</item> <item>pfmax</item> <item>pfmin</item> <item>pfmul</item> <item>pfnacc</item> <item>pfpnacc</item> <item>pfrcp</item> <item>pfrcpit1</item> <item>pfrcpit2</item> <item>pfrsqit1</item> <item>pfrsqrt</item> <item>pfsub</item> <item>pfsubr</item> <item>pi2fd</item> <item>pi2fw</item> <item>pinsrw</item> <item>pmachriw</item> <item>pmaddwd</item> <item>pmagw</item> <item>pmaxsw</item> <item>pmaxub</item> <item>pminsw</item> <item>pminub</item> <item>pmovmskb</item> <item>pmulhrw</item> <item>pmulhuw</item> <item>pmulhw</item> <item>pmullw</item> <item>pmuludq</item> <item>pmvgezb</item> <item>pmvlzb</item> <item>pmvnzb</item> <item>pmvzb</item> <item>pop</item> <item>popa</item> <item>popaw</item> <item>popad</item> <item>popf</item> <item>popfw</item> <item>popfd</item> <item>popfq</item> <item>por</item> <item>prefetch</item> <item>prefetchnta</item> <item>prefetcht0</item> <item>prefetcht1</item> <item>prefetcht2</item> <item>prefetchw</item> <item>psadbw</item> <item>pshufd</item> <item>pshufhw</item> <item>pshuflw</item> <item>pshufw</item> <item>pslld</item> <item>pslldq</item> <item>psllq</item> <item>psllw</item> <item>psrad</item> <item>psraw</item> <item>psrld</item> <item>psrldq</item> <item>psrlq</item> <item>psrlw</item> <item>psubb</item> <item>psubd</item> <item>psubq</item> <item>psubsb</item> <item>psubsiw</item> <item>psubsw</item> <item>psubusb</item> <item>psubusw</item> <item>psubw</item> <item>pswapd</item> <item>punpckhbw</item> <item>punpckhdq</item> <item>punpckhqdq</item> <item>punpckhwd</item> <item>punpcklbw</item> <item>punpckldq</item> <item>punpcklqdq</item> <item>punpcklwd</item> <item>push</item> <item>pusha</item> <item>pushad</item> <item>pushaw</item> <item>pushf</item> <item>pushfd</item> <item>pushfq</item> <item>pushfw</item> <item>pxor</item> <item>rcl</item> <item>rcr</item> <item>rcpps</item> <item>rcpss</item> <item>rdmsr</item> <item>rdpmc</item> <item>rdshr</item> <item>rdtsc</item> <item>rdtscp</item> <item>ret</item> <item>retf</item> <item>retn</item> <item>rol</item> <item>ror</item> <item>rsdc</item> <item>rsldt</item> <item>rsm</item> <item>rsqrtps</item> <item>rsqrtss</item> <item>rsts</item> <item>sahf</item> <item>sal</item> <item>sar</item> <item>salc</item> <item>sbb</item> <item>scas</item> <item>scasb</item> <item>scasd</item> <item>scasq</item> <item>scasw</item> <item>seta</item> <item>setae</item> <item>setb</item> <item>setbe</item> <item>setc</item> <item>sete</item> <item>setg</item> <item>setge</item> <item>setl</item> <item>setle</item> <item>setna</item> <item>setnae</item> <item>setnb</item> <item>setnbe</item> <item>setnc</item> <item>setne</item> <item>setng</item> <item>setnge</item> <item>setnl</item> <item>setnle</item> <item>setno</item> <item>setnp</item> <item>setns</item> <item>setnz</item> <item>seto</item> <item>setp</item> <item>setpe</item> <item>setpo</item> <item>sets</item> <item>setz</item> <item>sfence</item> <item>sgdt</item> <item>shl</item> <item>shld</item> <item>shr</item> <item>shrd</item> <item>shufpd</item> <item>shufps</item> <item>sidt</item> <item>skinit</item> <item>sldt</item> <item>smi</item> <item>smint</item> <item>smintold</item> <item>smsw</item> <item>sqrtpd</item> <item>sqrtps</item> <item>sqrtsd</item> <item>sqrtss</item> <item>stc</item> <item>std</item> <item>stgi</item> <item>sti</item> <item>stmxcsr</item> <item>stos</item> <item>stosb</item> <item>stosd</item> <item>stosq</item> <item>stosw</item> <item>str</item> <item>sub</item> <item>subpd</item> <item>subps</item> <item>subsd</item> <item>subss</item> <item>svdc</item> <item>svldt</item> <item>svts</item> <item>swapgs</item> <item>syscall</item> <item>sysenter</item> <item>sysexit</item> <item>sysret</item> <item>test</item> <item>ucomisd</item> <item>ucomiss</item> <item>ud0</item> <item>ud1</item> <item>ud2</item> <item>umov</item> <item>unpckhpd</item> <item>unpckhps</item> <item>unpcklpd</item> <item>unpcklps</item> <item>verr</item> <item>verw</item> <item>vmload</item> <item>vmmcall</item> <item>vmrun</item> <item>vmsave</item> <item>wait</item> <item>wbinvd</item> <item>wrmsr</item> <item>wrshr</item> <item>xadd</item> <item>xbts</item> <item>xchg</item> <item>xlat</item> <item>xlatb</item> <item>xor</item> <item>xorpd</item> <item>xorps</item> </list> <list name="Data"> <!-- Initialized data (1.2.2)--> <item>db</item> <item>dw</item> <item>du</item> <item>dd</item> <item>dp</item> <item>df</item> <item>dq</item> <item>dt</item> <!-- Uninitialized data (1.2.2)--> <item>rb</item> <item>rw</item> <item>rd</item> <item>rp</item> <item>rf</item> <item>rq</item> <item>rt</item> <!-- binary file include (1.2.2)--> <item>file</item> <!-- operand size from (1.2.1)--> <item>byte</item> <item>word</item> <item>dword</item> <item>pword</item> <item>qword</item> <item>tbyte</item> <item>tword</item> <item>dqword</item> <item>ptr</item> </list> <list name="Preprocessor Keywords"> <!-- Contains keywords for macros, structures, etc... --> <item>append</item> <item>at</item> <!-- As in "virtual at"--> <item>break</item> <item>common</item> <item>display</item> <item>else</item> <item>end</item> <!-- As in "end if"--> <item>equ</item> <item>fix</item> <item>foward</item> <item>if</item> <item>irp</item> <item>irps</item> <item>label</item> <item>local</item> <item>match</item> <item>macro</item> <item>purge</item> <item>repeat</item> <item>rept</item> <item>reverse</item> <item>restore</item> <item>struc</item> <item>times</item> <item>while</item> <item>virtual</item> </list> <list name="Instruction-like Keywords"> <!-- Contains instruction-like keywords --> <item>align</item> <item>entry</item> <item>extrn</item> <item>format</item> <item>include</item> <item>invoke</item> <item>data</item> <item>load</item> <item>from</item> <item>heap</item> <item>org</item> <item>proc</item> <item>public</item> <item>section</item> <item>segment</item> <item>stack</item> <item>store</item> <item>use16</item> <item>use32</item> <item>use64</item> </list> <contexts> <context name="Normal" attribute="Normal Text" lineEndContext="#stay"> <keyword attribute="Registers" context="#stay" String="registers"/> <keyword attribute="Data" context="#stay" String="Data"/> <keyword attribute="Instructions" context="#stay" String="instructions"/> <keyword attribute="Instructions" context="#stay" String="Instruction-like Keywords"/> <keyword attribute="Preprocessor" context="#stay" String="Preprocessor Keywords"/> <DetectChar attribute="Comment" context="Comment" char=";"/> <AnyChar attribute="String" context="String" String=""'"/> <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9@_.$?]+:"/> <!-- Conditional instructions --> <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/> <!-- hexadecimal numbers --> <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[a-f0-9]+h)([ \t,]+|$)"/> <!-- octal and binary numbers --> <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/> <DetectChar attribute="Number" context="#stay" char="$"/> <HlCOct attribute="BaseN" context="#stay"/> <HlCHex attribute="BaseN" context="#stay"/> <Float attribute="Float" context="#stay"/> <Int attribute="Number" context="#stay"/> <HlCChar attribute="Char" context="#stay"/> </context> <context name="Comment" attribute="Comment" lineEndContext="#pop"/> <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/> <context name="String" attribute="String" lineEndContext="#pop"> <AnyChar attribute="String" context="#pop" String=""'"/> </context> </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal"/> <itemData name="Registers" defStyleNum="dsKeyword"/> <itemData name="Instructions" defStyleNum="dsKeyword"/> <itemData name="Comment" defStyleNum="dsComment"/> <itemData name="Label" defStyleNum="dsFunction"/> <itemData name="Data" defStyleNum="dsDataType"/> <itemData name="BaseN" defStyleNum="dsBaseN"/> <itemData name="Float" defStyleNum="dsFloat"/> <itemData name="Number" defStyleNum="dsDecVal"/> <itemData name="Char" defStyleNum="dsChar"/> <itemData name="String" defStyleNum="dsString"/> <itemData name="Preprocessor" defStyleNum="dsOthers"/> </itemDatas> </highlighting> <general> <keywords casesensitive="0"/> <comments> <comment name="singleLine" start=";"/> </comments> </general> </language> <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->