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); 602