[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/vendor/geshi/geshi/src/geshi/ -> asm.php (source)

   1  <?php
   2  /*************************************************************************************
   3   * asm.php
   4   * -------
   5   * Author: Tux (tux@inmail.cz)
   6   * Copyright: (c) 2004 Tux (http://tux.a4.cz/),
   7   *                2004-2009 Nigel McNie (http://qbnz.com/highlighter),
   8   *                2009-2011 Benny Baumann (http://qbnz.com/highlighter),
   9   *                2011 Dennis Yurichev (dennis@conus.info),
  10   *                2011 Marat Dukhan (mdukhan3.at.gatech.dot.edu)
  11   * Release Version: 1.0.9.1
  12   * Date Started: 2004/07/27
  13   *
  14   * x86 Assembler language file for GeSHi.
  15   * Based on the following documents:
  16   *   - "Intel64 and IA-32 Architectures Programmer's Reference Manual
  17   *       Volume 2 (2A & 2B): Instructions Set Reference, A-Z",
  18   *       Order Number 25383-039US, May 2011
  19   *   - "Intel Advanced Vector Extensions Programming Reference",
  20   *       Order Number 319433-011, June 2011
  21   *   - "AMD64 Architecture Programmer's Manual Volume 3:
  22   *       General-Purpose and System Instructions", Publication No. 24594,
  23   *       Revision 3.15, November 2009
  24   *   - "AMD64 Architecture Programmer's Manual Volume 4:
  25   *       128-Bit and 256-Bit Media Instructions", Publication No. 26568,
  26   *       Revision 3.12, May 2011
  27   *   - "AMD64 Architecture Programmer's Manual Volume 5:
  28   *       64-Bit Media and x87 Floating-Point Instructions",
  29   *       Publication No. 26569, Revision 3.11, December 2009
  30   *   - "AMD64 Technology Lightweight Profiling Specification",
  31   *       Publication No. 43724, Revision 3.08, August 2010
  32   *   - "Application Note 108: Cyrix Extended MMX Instruction Set"
  33   *   - "VIA Padlock Programming Guide", 3rd May 2005
  34   *   - http://en.wikipedia.org/wiki/X86_instruction_listings
  35   *   - NASM 2.10rc8 Online Documenation at
  36   *       http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc0.html
  37   * Color scheme is taken from SciTE. Previous versions of this file
  38   * also used words from SciTE configuration file (based on NASM syntax)
  39   *
  40   * CHANGES
  41   * -------
  42   * 2011/10/07
  43   *   -  Rearranged instructions and registers into groups
  44   *   -  Updated to support the following extensions
  45   *          - CMOV, BMI1, BMI2, TBM, FSGSBASE
  46   *          - LZCNT, TZCNT, POPCNT, MOVBE, CRC32
  47   *          - MMX, MMX+, EMMX
  48   *          - 3dnow!, 3dnow!+, 3dnow! Geode, 3dnow! Prefetch
  49   *          - SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2
  50   *          - AVX, AVX2, XOP, FMA3, FMA4, CVT16
  51   *          - VMX, SVM
  52   *          - AES, PCLMULQDQ, Padlock, RDRAND
  53   *   -  Updated NASM macros and directives
  54   * 2010/07/01 (1.0.8.11)
  55   *   -  Added MMX/SSE/new x86-64 registers, MMX/SSE (up to 4.2) instructions
  56   * 2008/05/23 (1.0.7.22)
  57   *   -  Added description of extra language features (SF#1970248)
  58   * 2004/11/27 (1.0.2)
  59   *   -  Added support for multiple object splitters
  60   * 2004/10/27 (1.0.1)
  61   *   -  Added support for URLs
  62   *   -  Added binary and hexadecimal regexps
  63   * 2004/08/05 (1.0.0)
  64   *   -  First Release
  65   *
  66   * TODO (updated 2004/11/27)
  67   * -------------------------
  68   *
  69   *************************************************************************************
  70   *
  71   *     This file is part of GeSHi.
  72   *
  73   *   GeSHi is free software; you can redistribute it and/or modify
  74   *   it under the terms of the GNU General Public License as published by
  75   *   the Free Software Foundation; either version 2 of the License, or
  76   *   (at your option) any later version.
  77   *
  78   *   GeSHi is distributed in the hope that it will be useful,
  79   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  80   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  81   *   GNU General Public License for more details.
  82   *
  83   *   You should have received a copy of the GNU General Public License
  84   *   along with GeSHi; if not, write to the Free Software
  85   *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  86   *
  87   ************************************************************************************/
  88  
  89  $language_data = array (
  90      'LANG_NAME' => 'ASM',
  91      'COMMENT_SINGLE' => array(1 => ';'),
  92      'COMMENT_MULTI' => array(),
  93      //Line address prefix suppression
  94      'COMMENT_REGEXP' => array(2 => "/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi"),
  95      'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
  96      'QUOTEMARKS' => array("'", '"'),
  97      'ESCAPE_CHAR' => '',
  98      'KEYWORDS' => array(
  99          /* General-Purpose */
 100          1 => array(
 101              /* BCD instructions */
 102              'aaa','aad','aam','aas','daa','das',
 103              /* Control flow instructions */
 104              'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna',
 105              'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
 106              'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne',
 107              'call','ret','enter','leave','syscall','sysenter','int','into',
 108              /* Predicate instructions */
 109              'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna',
 110              'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno',
 111              'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc',
 112              /* Conditional move instructions */
 113              'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz',
 114              'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe',
 115              'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle',
 116              /* ALU instructions */
 117              'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test',
 118              'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr',
 119              'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts',
 120              'idiv','imul','div','mul','bswap','nop',
 121              /* Memory instructions */
 122              'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b',
 123              /* Stack instructions */
 124              'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq',
 125              /* EFLAGS manipulations instructions */
 126              'clc','cld','stc','std','cmc','lahf','sahf',
 127              /* Prefix instructions */
 128              'lock','rep','repe','repz','repne','repnz',
 129              /* String instructions */
 130              'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/
 131              'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/
 132              'scas','scasb','scasw','scasd','scasq',
 133              'stos','stosb','stosw','stosd','stosq',
 134              'lods','lodsb','lodsw','lodsd','lodsq',
 135              /* Information instructions */
 136              'cpuid','rdtsc','rdtscp','rdpmc','xgetbv',
 137              'sgdt','sidt','sldt','smsw','str','lar',
 138              /* LWP instructions */
 139              'llwpcb','slwpcb','lwpval','lwpins',
 140              /* Instructions from miscellaneous extensions */
 141              'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand',
 142              /* FSGSBASE instructions */
 143              'rdfsbase','rdgsbase','wrfsbase','wrgsbase',
 144              /* BMI1 instructions */
 145              'andn','bextr','blsi','blsmk','blsr',
 146              /* BMI2 instructions */
 147              'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx',
 148              /* TBM instructions */
 149              'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk',
 150              /* Legacy instructions */
 151              'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw',
 152              /* Privileged instructions */
 153              'cli','sti','clts','hlt','rsm','in','insb','insw','insd',
 154              'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd',
 155              'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr',
 156              'monitor','mwait','rdmsr','wrmsr','swapgs',
 157              'fxsave','fxsave64','fxrstor','fxrstor64',
 158              'xsave','xsaveopt','xrstor','xsetbv','getsec',
 159              /* VMX instructions */
 160              'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume',
 161              'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon',
 162              /* SVM (AMD-V) instructions */
 163              'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun'
 164              ),
 165          /*FPU*/
 166          2 => array(
 167              'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
 168              'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
 169              'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
 170              'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
 171              'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
 172              'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
 173              'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
 174              'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
 175              'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
 176              'fstenvd','fucom','fucomp','fucompp','ffreep',
 177              /* FCMOV instructions */
 178              'fcomi','fcomip','fucomi','fucomip',
 179              'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu',
 180              /* SSE3 instructions */
 181              'fisttp'
 182              ),
 183          /*SIMD*/
 184          3 => array(
 185              /* MMX instructions */
 186              'movd','movq',
 187              'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw',
 188              'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw',
 189              'pand','pandn','por','pxor',
 190              'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',
 191              'pmaddwd','pmulhw','pmullw',
 192              'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad',
 193              'packuswb','packsswb','packssdw',
 194              'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq',
 195              'emms',
 196              /* MMX+ instructions */
 197              'pavgb','pavgw',
 198              'pextrw','pinsrw','pmovmskb',
 199              'pmaxsw','pmaxub','pminsw','pminub',
 200              'pmulhuw','psadbw','pshufw',
 201              'prefetchnta','prefetcht0','prefetcht1','prefetcht2',
 202              'maskmovq','movntq','sfence',
 203              /* EMMX instructions (only available on Cyrix MediaGXm) */
 204              'paddsiw','psubsiw',
 205              /*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */
 206              'pmagw','pdistib','paveb',
 207              'pmvzb','pmvnzb','pmvlzb','pmvgezb',
 208              /* 3dnow! instructions! */
 209              'pfacc','pfadd','pfsub','pfsubr','pfmul',
 210              'pfcmpeq','pfcmpge','pfcmpgt',
 211              'pfmax','pfmin',
 212              'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt',
 213              'pi2fd','pf2id',
 214              'pavgusb','pmulhrw',
 215              'femms',
 216              /* 3dnow!+ instructions */
 217              'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd',
 218              /* 3dnow! Geode instructions */
 219              'pfrsqrtv','pfrcpv',
 220              /* 3dnow! Prefetch instructions */
 221              'prefetch','prefetchw',
 222              /* SSE instructions */
 223              'addss','addps','subss','subps',
 224              'mulss','mulps','divss','divps','sqrtss','sqrtps',
 225              'rcpss','rcpps','rsqrtss','rsqrtps',
 226              'maxss','maxps','minss','minps',
 227              'cmpss','comiss','ucomiss','cmpps',
 228              'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss',
 229              'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps',
 230              'andnps','andps','orps','xorps',
 231              'cvtsi2ss','cvtss2si','cvttss2si',
 232              'cvtpi2ps','cvtps2pi','cvttps2pi',
 233              'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps',
 234              'shufps','unpckhps','unpcklps',
 235              'ldmxcsr','stmxcsr',
 236              /* SSE2 instructions */
 237              'addpd','addsd','subpd','subsd',
 238              'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd',
 239              'maxsd','maxpd','minsd','minpd',
 240              'cmpsd','comisd','ucomisd','cmppd',
 241              'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd',
 242              'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd',
 243              'andnpd','andpd','orpd','xorpd',
 244              'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd',
 245              'cvtdq2ps','cvtps2dq','cvttps2dq',
 246              'cvtdq2pd','cvtpd2dq','cvttpd2dq',
 247              'cvtsi2sd','cvtsd2si','cvttsd2si',
 248              'cvtpi2pd','cvtpd2pi','cvttpd2pi',
 249              'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd',
 250              'shufpd','unpckhpd','unpcklpd',
 251              'movnti','movdqa','movdqu','movntdq','maskmovdqu',
 252              'movdq2q','movq2dq',
 253              'paddq','psubq','pmuludq',
 254              'pslldq','psrldq',
 255              'punpcklqdq','punpckhqdq',
 256              'pshufhw','pshuflw','pshufd',
 257              'lfence','mfence',
 258              /* SSE3 instructions */
 259              'addsubps','addsubpd',
 260              'haddps','haddpd','hsubps','hsubpd',
 261              'movsldup','movshdup','movddup',
 262              'lddqu',
 263              /* SSSE3 instructions */
 264              'psignb','psignw','psignd',
 265              'pabsb','pabsw','pabsd',
 266              'palignr','pshufb',
 267              'pmulhrsw','pmaddubsw',
 268              'phaddw','phaddd','phaddsw',
 269              'phsubw','phsubd','phsubsw',
 270              /* SSE4A instructions */
 271              'extrq','insertq','movntsd','movntss',
 272              /* SSE4.1 instructions */
 273              'mpsadbw','phminposuw',
 274              'pmuldq','pmulld',
 275              'dpps','dppd',
 276              'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw',
 277              'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud',
 278              'roundps','roundss','roundpd','roundsd',
 279              'insertps','pinsrb','pinsrd','pinsrq',
 280              'extractps','pextrb','pextrd','pextrq',
 281              'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq',
 282              'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq',
 283              'ptest',
 284              'pcmpeqq',
 285              'packusdw',
 286              'movntdqa',
 287              /* SSE4.2 instructions */
 288              'pcmpgtq',
 289              'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm',
 290              /* AES instructions */
 291              'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc',
 292              /* VIA Padlock instructions */
 293              'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb',
 294              'xsha1','xsha256','montmul','xstore',
 295              /* AVX instructions */
 296              'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd',
 297              'vaddsubps','vaddsubpd',
 298              'vhaddps','vhaddpd','vhsubps','vhsubpd',
 299              'vmulss','vmulps','vmulsd','vmulpd',
 300              'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd',
 301              'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd',
 302              'vblendps','vblendpd','vblendvps','vblendvpd',
 303              'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd',
 304              'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss',
 305              'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess',
 306              'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss',
 307              'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss',
 308              'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps',
 309              'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps',
 310              'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps',
 311              'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps',
 312              'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd',
 313              'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd',
 314              'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd',
 315              'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd',
 316              'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd',
 317              'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd',
 318              'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd',
 319              'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd',
 320              'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd',
 321              'vcvtsi2ss','vcvtss2si','vcvttss2si',
 322              'vcvtpi2ps','vcvtps2pi','vcvttps2pi',
 323              'vcvtdq2ps','vcvtps2dq','vcvttps2dq',
 324              'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq',
 325              'vcvtsi2sd','vcvtsd2si','vcvttsd2si',
 326              'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi',
 327              'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd',
 328              'vdpps','vdppd',
 329              'vmaskmovps','vmaskmovpd',
 330              'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd',
 331              'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd',
 332              'vmovsldup','vmovshdup','vmovddup',
 333              'vmovmskps','vmovmskpd',
 334              'vroundss','vroundps','vroundsd','vroundpd',
 335              'vrcpss','vrcpps','vrsqrtss','vrsqrtps',
 336              'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd',
 337              'vbroadcastss','vbroadcastsd','vbroadcastf128',
 338              'vextractps','vinsertps','vextractf128','vinsertf128',
 339              'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128',
 340              'vtestps','vtestpd',
 341              'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq',
 342              'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq',
 343              'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd',
 344              'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad',
 345              'vpand','vpandn','vpor','vpxor',
 346              'vpblendwb','vpblendw',
 347              'vpsignb','vpsignw','vpsignd',
 348              'vpavgb','vpavgw',
 349              'vpabsb','vpabsw','vpabsd',
 350              'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu',
 351              'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq',
 352              'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq',
 353              'vpackuswb','vpacksswb','vpackusdw','vpackssdw',
 354              'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq',
 355              'vpmaddubsw','vpmaddwd',
 356              'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq',
 357              'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd',
 358              'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd',
 359              'vpmovmskb','vptest',
 360              'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq',
 361              'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq',
 362              'vpslldq','vpsrldq','vpalignr',
 363              'vpshufb','vpshuflw','vpshufhw','vpshufd',
 364              'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq',
 365              'vpsadbw','vmpsadbw','vphminposuw',
 366              'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm',
 367              'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc',
 368              'vldmxcsr','vstmxcsr','vzeroall','vzeroupper',
 369              /* AVX2 instructions */
 370              'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq',
 371              'vpblendd',
 372              'vpermd','vpermq','vperm2i128',
 373              'vextracti128','vinserti128',
 374              'vpmaskmovd','vpmaskmovq',
 375              'vpsllvd','vpsllvq','vpsravd','vpsrlvd',
 376              'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq',
 377              'vpermps','vpermpd',
 378              'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps',
 379              /* XOP instructions */
 380              'vfrczss','vfrczps','vfrczsd','vfrczpd',
 381              'vpermil2ps','vperlil2pd',
 382              'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq',
 383              'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq',
 384              'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq',
 385              'vphsubbw','vphsubwd','vphsubdq',
 386              'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh',
 387              'vpmacsww','vpmacssww','vpmacswd','vpmacsswd',
 388              'vpmadcswd','vpmadcsswd',
 389              'vpcmov','vpperm',
 390              'vprotb','vprotw','vprotd','vprotq',
 391              'vpshab','vpshaw','vpshad','vpshaq',
 392              'vpshlb','vpshlw','vpshld','vpshlq',
 393              /* CVT16 instructions */
 394              'vcvtph2ps','vcvtps2ph',
 395              /* FMA4 instructions */
 396              'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd',
 397              'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd',
 398              'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd',
 399              'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd',
 400              'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd',
 401              /* FMA3 instructions */
 402              'vfmadd132ss','vfmadd213ss','vfmadd231ss',
 403              'vfmadd132ps','vfmadd213ps','vfmadd231ps',
 404              'vfmadd132sd','vfmadd213sd','vfmadd231sd',
 405              'vfmadd132pd','vfmadd213pd','vfmadd231pd',
 406              'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps',
 407              'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd',
 408              'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps',
 409              'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd',
 410              'vfmsub132ss','vfmsub213ss','vfmsub231ss',
 411              'vfmsub132ps','vfmsub213ps','vfmsub231ps',
 412              'vfmsub132sd','vfmsub213sd','vfmsub231sd',
 413              'vfmsub132pd','vfmsub213pd','vfmsub231pd',
 414              'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss',
 415              'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps',
 416              'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd',
 417              'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd',
 418              'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss',
 419              'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps',
 420              'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd',
 421              'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd'
 422              ),
 423          /*registers*/
 424          4 => array(
 425              /* General-Purpose Registers */
 426              'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl',
 427              'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b',
 428              'ax','bx','cx','dx','si','di','bp','sp',
 429              'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w',
 430              'eax','ebx','ecx','edx','esi','edi','ebp','esp',
 431              'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d',
 432              'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi',
 433              'r8','r9','r10','r11','r12','r13','r14','r15',
 434              /* Debug Registers */
 435              'dr0','dr1','dr2','dr3','dr6','dr7',
 436              /* Control Registers */
 437              'cr0','cr2','cr3','cr4','cr8',
 438              /* Test Registers (Supported on Intel 486 only) */
 439              'tr3','tr4','tr5','tr6','tr7',
 440              /* Segment Registers */
 441              'cs','ds','es','fs','gs','ss',
 442              /* FPU Registers */
 443              'st','st0','st1','st2','st3','st4','st5','st6','st7',
 444              /* MMX Registers */
 445              'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7',
 446              /* SSE Registers */
 447              'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7',
 448              'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15',
 449              /* AVX Registers */
 450              'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7',
 451              'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15'
 452              ),
 453          /*Directive*/
 454          5 => array(
 455              'db','dw','dd','dq','dt','do','dy',
 456              'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh',
 457              '__utf16__','__utf32__',
 458              'default','cpu','float','start','imagebase','osabi',
 459              '..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie',
 460              'section','segment','__sect__','group','absolute',
 461              '.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text',
 462              'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write',
 463              'private','public','common','stack','overlay','class',
 464              'extern','global','import','export',
 465              '%define','%idefine','%xdefine','%ixdefine','%assign','%undef',
 466              '%defstr','%idefstr','%deftok','%ideftok',
 467              '%strcat','%strlen','%substr',
 468              '%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro',
 469              '%if','%ifn','%elif','%elifn','%else','%endif',
 470              '%ifdef','%ifndef','%elifdef','%elifndef',
 471              '%ifmacro','%ifnmacro','%elifmacro','%elifnmacro',
 472              '%ifctx','%ifnctx','%elifctx','%elifnctx',
 473              '%ifidn','%ifnidn','%elifidn','%elifnidn',
 474              '%ifidni','%ifnidni','%elifidni','%elifnidni',
 475              '%ifid','%ifnid','%elifid','%elifnid',
 476              '%ifnum','%ifnnum','%elifnum','%elifnnum',
 477              '%ifstr','%ifnstr','%elifstr','%elifnstr',
 478              '%iftoken','%ifntoken','%eliftoken','%elifntoken',
 479              '%ifempty','%ifnempty','%elifempty','%elifnempty',
 480              '%ifenv','%ifnenv','%elifenv','%elifnenv',
 481              '%rep','%exitrep','%endrep',
 482              '%while','%exitwhile','%endwhile',
 483              '%include','%pathsearch','%depend','%use',
 484              '%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small',
 485              '%error','%warning','%fatal',
 486              '%00','.nolist','%rotate','%line','%!','%final','%clear',
 487              'struc','endstruc','istruc','at','iend',
 488              'align','alignb','sectalign',
 489              'bits','use16','use32','use64',
 490              '__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__',
 491              '__nasm_version_id__','__nasm_ver__',
 492              '__file__','__line__','__pass__','__bits__','__output_format__',
 493              '__date__','__time__','__date_num__','__time_num__','__posix_time__',
 494              '__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__',
 495              '__float_daz__','__float_round__','__float__',
 496              /* Keywords from standard packages */
 497              '__use_altreg__',
 498              '__use_smartalign__','smartalign','__alignmode__',
 499              '__use_fp__','__infinity__','__nan__','__qnan__','__snan__',
 500              '__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__'
 501              ),
 502          /*Operands*/
 503          6 => array(
 504              'a16','a32','a64','o16','o32','o64','strict',
 505              'byte','word','dword','qword','tword','oword','yword','nosplit',
 506              '%0','%1','%2','%3','%4','%5','%6','%7','%8','%9',
 507              'abs','rel',
 508              'seg','wrt'
 509              )
 510          ),
 511      'SYMBOLS' => array(
 512          1 => array(
 513                  '[', ']', '(', ')',
 514                  '+', '-', '*', '/', '%',
 515                  '.', ',', ';', ':'
 516              ),
 517          2 => array(
 518                  '$','$$','%+','%?','%??'
 519              )
 520          ),
 521      'CASE_SENSITIVE' => array(
 522          GESHI_COMMENTS => false,
 523          1 => false,
 524          2 => false,
 525          3 => false,
 526          4 => false,
 527          5 => false,
 528          6 => false
 529          ),
 530      'STYLES' => array(
 531          'KEYWORDS' => array(
 532              1 => 'color: #00007f; font-weight: bold;',
 533              2 => 'color: #0000ff;',
 534              3 => 'color: #b00040;',
 535              4 => 'color: #46aa03; font-weight: bold;',
 536              5 => 'color: #0000ff; font-weight: bold;',
 537              6 => 'color: #0000ff; font-weight: bold;'
 538              ),
 539          'COMMENTS' => array(
 540              1 => 'color: #666666; font-style: italic;',
 541              2 => 'color: #adadad; font-style: italic;'
 542              ),
 543          'ESCAPE_CHAR' => array(
 544              0 => 'color: #000099; font-weight: bold;'
 545              ),
 546          'BRACKETS' => array(
 547              0 => 'color: #009900; font-weight: bold;'
 548              ),
 549          'STRINGS' => array(
 550              0 => 'color: #7f007f;'
 551              ),
 552          'NUMBERS' => array(
 553              0 => 'color: #ff0000;'
 554              ),
 555          'METHODS' => array(
 556              ),
 557          'SYMBOLS' => array(
 558              1 => 'color: #339933;',
 559              2 => 'color: #0000ff; font-weight: bold;'
 560              ),
 561          'REGEXPS' => array(
 562              ),
 563          'SCRIPT' => array(
 564              )
 565          ),
 566      'URLS' => array(
 567          1 => '',
 568          2 => '',
 569          3 => '',
 570          4 => '',
 571          5 => '',
 572          6 => ''
 573          ),
 574      'NUMBERS' =>
 575          GESHI_NUMBER_BIN_PREFIX_PERCENT |
 576          GESHI_NUMBER_BIN_SUFFIX |
 577          GESHI_NUMBER_HEX_PREFIX |
 578          GESHI_NUMBER_HEX_SUFFIX |
 579          GESHI_NUMBER_OCT_SUFFIX |
 580          GESHI_NUMBER_INT_BASIC |
 581          GESHI_NUMBER_FLT_NONSCI |
 582          GESHI_NUMBER_FLT_NONSCI_F |
 583          GESHI_NUMBER_FLT_SCI_ZERO,
 584      'OOLANG' => false,
 585      'OBJECT_SPLITTERS' => array(
 586          ),
 587      'REGEXPS' => array(
 588          ),
 589      'STRICT_MODE_APPLIES' => GESHI_NEVER,
 590      'SCRIPT_DELIMITERS' => array(
 591          ),
 592      'HIGHLIGHT_STRICT_BLOCK' => array(
 593          ),
 594      'TAB_WIDTH' => 8,
 595      'PARSER_CONTROL' => array(
 596          'KEYWORDS' => array(
 597              'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])",
 598              'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])"
 599          )
 600      )
 601  );