Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

x86istri.h

Go to the documentation of this file.
00001 /*
00002 PeRdr - PE file disassembler
00003 Copyright (C) 1999-2002 Frediano Ziglio
00004 -----
00005 
00006 This program is free software; you can redistribute it and/or modify
00007 it under the terms of the GNU General Public License as published by
00008 the Free Software Foundation; either version 2 of the License, or
00009 (at your option) any later version.
00010 
00011 This program is distributed in the hope that it will be useful,
00012 but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 GNU General Public License for more details.
00015 
00016 You should have received a copy of the GNU General Public License
00017 along with this program; if not, write to the Free Software
00018 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 -----
00020 
00021 INFORMATION
00022   www: https://freddy77.tripod.com/perdr/
00023   e-mail: freddy77@angelfire.com
00024 */
00025 BEGIN_ISTR
00026   DEFINE_ISTR2(aaa,if),
00027   DEFINE_ISTR2(aad,if),
00028   DEFINE_ISTR2(aam,if),
00029   DEFINE_ISTR2(aas,if),
00030   DEFINE_ISTR2(adc,if),
00031   DEFINE_ISTR2(add,if),
00032   DEFINE_ISTR2(and,if),
00033   DEFINE_ISTR(arpl),
00034   DEFINE_ISTR2(bound,i), // accede a interi ma non accede ai flag
00035   DEFINE_ISTR2(bsf,if),
00036   DEFINE_ISTR2(bsr,if),
00037   DEFINE_ISTR2(bswap,i),
00038   DEFINE_ISTR2(bt,if),
00039   DEFINE_ISTR2(btc,if),
00040   DEFINE_ISTR2(btr,if),
00041   DEFINE_ISTR2(bts,if),
00042   DEFINE_ISTR2(call,is), // flag cambiati solo se call a task
00043   DEFINE_ISTR2(cbw,is),
00044   DEFINE_ISTR2(cdq,is),
00045   DEFINE_ISTR2(clc,f),
00046   DEFINE_ISTR2(cld,f),
00047   DEFINE_ISTR2(cli,f),
00048   DEFINE_ISTR(clts),
00049   DEFINE_ISTR2(cmc,f),
00050   DEFINE_ISTR2(cmovb,if), // flag solo lettura
00051   DEFINE_ISTR2(cmovbe,if),
00052   DEFINE_ISTR2(cmovl,if),
00053   DEFINE_ISTR2(cmovle,if),
00054   DEFINE_ISTR2(cmovnb,if),
00055   DEFINE_ISTR2(cmovnbe,if),
00056   DEFINE_ISTR2(cmovnl,if),
00057   DEFINE_ISTR2(cmovnle,if),
00058   DEFINE_ISTR2(cmovno,if),
00059   DEFINE_ISTR2(cmovnp,if),
00060   DEFINE_ISTR2(cmovns,if),
00061   DEFINE_ISTR2(cmovnz,if),
00062   DEFINE_ISTR2(cmovo,if),
00063   DEFINE_ISTR2(cmovp,if),
00064   DEFINE_ISTR2(cmovs,if),
00065   DEFINE_ISTR2(cmovz,if),
00066   DEFINE_ISTR2(cmp,if),
00067   DEFINE_ISTR2(cmpsb,isf),
00068   DEFINE_ISTR2(cmpsw,isf),
00069   DEFINE_ISTR2(cmpsd,isf),
00070   DEFINE_ISTR2(cmpxchg,if),
00071   DEFINE_ISTR2(cmpxchg8b,isf),
00072   DEFINE_ISTR2(cpuid,i),
00073   DEFINE_ISTR2(cwd,is),
00074   DEFINE_ISTR2(cwde,is),
00075   DEFINE_ISTR2(daa,isf),
00076   DEFINE_ISTR2(das,isf),
00077   DEFINE_ISTR2(dec,if),
00078   DEFINE_ISTR2(div,isf),
00079   DEFINE_ISTR2(emms,none),  // modifica uno registri FPU per poterli usare come FP
00080   DEFINE_ISTR2(enter,is),
00081   DEFINE_ISTR(esc),
00082   DEFINE_ISTR2(f2xm1,F),  // floating-point instruction
00083   DEFINE_ISTR2(fabs,F),
00084   DEFINE_ISTR2(fadd,F),
00085   DEFINE_ISTR2(faddp,F),
00086   DEFINE_ISTR2(fbld,F),
00087   DEFINE_ISTR2(fbstp,F),
00088   DEFINE_ISTR2(fchs,F),
00089   DEFINE_ISTR2(fclex,none), // non modifica registri FPU, solo stato
00090   DEFINE_ISTR2(fcmovb,Ff),
00091   DEFINE_ISTR2(fcmovbe,Ff),
00092   DEFINE_ISTR2(fcmove,Ff),
00093   DEFINE_ISTR2(fcmovnb,Ff),
00094   DEFINE_ISTR2(fcmovnbe,Ff),
00095   DEFINE_ISTR2(fcmovne,Ff),
00096   DEFINE_ISTR2(fcmovnu,Ff),
00097   DEFINE_ISTR2(fcmovu,Ff),
00098   DEFINE_ISTR2(fcom,F),
00099   DEFINE_ISTR2(fcomi,Ff),
00100   DEFINE_ISTR2(fcomip,Ff),
00101   DEFINE_ISTR2(fcomp,F),
00102   DEFINE_ISTR2(fcompp,F),
00103   DEFINE_ISTR2(fcos,F),
00104   DEFINE_ISTR2(fdecstp,none), // modifica solo FPU stack
00105   DEFINE_ISTR(fdisi),
00106   DEFINE_ISTR2(fdiv,F),
00107   DEFINE_ISTR2(fdivp,F),
00108   DEFINE_ISTR2(fdivr,F),
00109   DEFINE_ISTR2(fdivrp,F),
00110   DEFINE_ISTR(feni),
00111   DEFINE_ISTR2(ffree,F),
00112   DEFINE_ISTR2(fiadd,F),
00113   DEFINE_ISTR2(ficom,F),
00114   DEFINE_ISTR2(ficomp,F),
00115   DEFINE_ISTR2(fidiv,F),
00116   DEFINE_ISTR2(fidivr,F),
00117   DEFINE_ISTR2(fild,F),
00118   DEFINE_ISTR2(fimul,F),
00119   DEFINE_ISTR2(fincstp,none),
00120   DEFINE_ISTR2(finit,none), // non tocca registri ??
00121   DEFINE_ISTR2(fist,F),
00122   DEFINE_ISTR2(fistp,F),
00123   DEFINE_ISTR2(fisub,F),
00124   DEFINE_ISTR2(fisubr,F),
00125   DEFINE_ISTR2(fld,F),
00126   DEFINE_ISTR2(fldcw,none), // ??? puo' caricare da registro16
00127   DEFINE_ISTR2(fldenv,none),
00128   DEFINE_ISTR2(fldl,F),
00129   DEFINE_ISTR2(fldl2e,F),
00130   DEFINE_ISTR2(fldl2t,F),
00131   DEFINE_ISTR2(fldlg2,F),
00132   DEFINE_ISTR2(fldln2,F),
00133   DEFINE_ISTR2(fldpi,F),
00134   DEFINE_ISTR2(fldz,F),
00135   DEFINE_ISTR2(fmul,F),
00136   DEFINE_ISTR2(fmulp,F),
00137   DEFINE_ISTR2(fnop,none),
00138   DEFINE_ISTR2(fnsave,F),
00139   DEFINE_ISTR2(fnstcw,none), // e se usa destinazione reg16 ??
00140   DEFINE_ISTR2(fnstenv,none),
00141   DEFINE_ISTR2(fnstsw,i), // usa anche stato FPU
00142   DEFINE_ISTR2(fpatan,F),
00143   DEFINE_ISTR2(fprem,F),
00144   DEFINE_ISTR2(fpreml,F),
00145   DEFINE_ISTR2(fptan,F),
00146   DEFINE_ISTR2(frndint,F),
00147   DEFINE_ISTR2(frstor,F), // ripristina stato FPU
00148   DEFINE_ISTR2(fscale,F),
00149   DEFINE_ISTR(fsetpm),
00150   DEFINE_ISTR2(fsin,F),
00151   DEFINE_ISTR2(fsincos,F),
00152   DEFINE_ISTR2(fsqrt,F),
00153   DEFINE_ISTR2(fst,F),
00154   DEFINE_ISTR2(fstp,F),
00155   DEFINE_ISTR(fstsw),  // !!! non dovrebbe essere fnstsw
00156   DEFINE_ISTR2(fsub,F),
00157   DEFINE_ISTR2(fsubp,F),
00158   DEFINE_ISTR2(fsubr,F),
00159   DEFINE_ISTR2(fsubrp,F),
00160   DEFINE_ISTR2(ftst,F),
00161   DEFINE_ISTR2(fucom,F),
00162   DEFINE_ISTR2(fucomi,Ff),
00163   DEFINE_ISTR2(fucomip,Ff),
00164   DEFINE_ISTR2(fucomp,F),
00165   DEFINE_ISTR(fucompuu),  //??
00166   DEFINE_ISTR2(fxam,F),
00167   DEFINE_ISTR2(fxch,F),
00168   DEFINE_ISTR2(fxtract,F),
00169   DEFINE_ISTR2(fyl2x,F),
00170   DEFINE_ISTR2(fyl2xpl,F),  // end floating-point instruction
00171   DEFINE_ISTR(fxrstor),
00172   DEFINE_ISTR(fxsave),
00173   DEFINE_ISTR2(hlt,none),
00174   DEFINE_ISTR2(idiv,isf),
00175   DEFINE_ISTR2(imul,isf),
00176   DEFINE_ISTR2(in,i),
00177   DEFINE_ISTR2(inc,i),
00178   DEFINE_ISTR2(insb,is),
00179   DEFINE_ISTR2(insw,is),
00180   DEFINE_ISTR2(insd,is),
00181   DEFINE_ISTR2(int,s),
00182   DEFINE_ISTR2(int3,s),
00183   DEFINE_ISTR2(into,sf),
00184   DEFINE_ISTR2(invd,none),
00185   DEFINE_ISTR2(invlpg,none), // usa registri solo come memoria
00186   DEFINE_ISTR2(iret,sf),
00187   DEFINE_ISTR2(jb,sf),
00188   DEFINE_ISTR2(jbe,sf),
00189   DEFINE_ISTR2(jc,sf),
00190   DEFINE_ISTR2(jcxz,isf),
00191   DEFINE_ISTR2(jg,sf),
00192   DEFINE_ISTR2(jl,sf),
00193   DEFINE_ISTR2(jle,sf),
00194   DEFINE_ISTR2(jmp,sf),
00195   DEFINE_ISTR2(jnb,sf),
00196   DEFINE_ISTR2(jnbe,sf),
00197   DEFINE_ISTR2(jnc,sf),
00198   DEFINE_ISTR2(jng,sf),
00199   DEFINE_ISTR2(jnl,sf),
00200   DEFINE_ISTR2(jnle,sf),
00201   DEFINE_ISTR2(jno,sf),
00202   DEFINE_ISTR2(jnp,sf),
00203   DEFINE_ISTR2(jns,sf),
00204   DEFINE_ISTR2(jnz,sf),
00205   DEFINE_ISTR2(jo,sf),
00206   DEFINE_ISTR2(jp,sf),
00207   DEFINE_ISTR2(js,sf),
00208   DEFINE_ISTR2(jz,sf),
00209   DEFINE_ISTR2(lahf,isf),
00210   DEFINE_ISTR(lar),
00211   DEFINE_ISTR(ldmxcsr),
00212   DEFINE_ISTR(lds),
00213   DEFINE_ISTR2(lea,is), // non accede alla memoria
00214   DEFINE_ISTR2(leave,is),
00215   DEFINE_ISTR(les),
00216   DEFINE_ISTR(lfs),
00217   DEFINE_ISTR(lgdt),
00218   DEFINE_ISTR(lgs),
00219   DEFINE_ISTR(lidt),
00220   DEFINE_ISTR(lldt),
00221   DEFINE_ISTR(lmsw),
00222   DEFINE_ISTR2(lock,s),
00223   DEFINE_ISTR2(lodsb,is),
00224   DEFINE_ISTR2(lodsw,is),
00225   DEFINE_ISTR2(lodsd,is),
00226   DEFINE_ISTR2(loop,is),
00227   DEFINE_ISTR2(loopnz,isf),
00228   DEFINE_ISTR2(loopz,isf),
00229   DEFINE_ISTR(lsl),
00230   DEFINE_ISTR(lss),
00231   DEFINE_ISTR(ltr),
00232   DEFINE_ISTR(maskmovq),
00233   DEFINE_ISTR2(mov,is), // !!! usa anche CR, ecc
00234   DEFINE_ISTR(movntq),
00235   DEFINE_ISTR2(movsb,is),
00236   DEFINE_ISTR2(movsw,is),
00237   DEFINE_ISTR2(movsd,is),
00238   DEFINE_ISTR2(movsx,is),
00239   DEFINE_ISTR2(movzx,is),
00240   DEFINE_ISTR2(mul,isf),
00241   DEFINE_ISTR2(neg,if),
00242   DEFINE_ISTR2(nop,none),
00243   DEFINE_ISTR2(not,i),
00244   DEFINE_ISTR2(or,if),
00245   DEFINE_ISTR2(out,i),
00246   DEFINE_ISTR2(outsb,is),
00247   DEFINE_ISTR2(outsw,is),
00248   DEFINE_ISTR2(outsd,is),
00249   DEFINE_ISTR(pextrw),
00250   DEFINE_ISTR(pmovmskb),
00251   DEFINE_ISTR2(pop,is),
00252   DEFINE_ISTR2(popa,is),
00253   DEFINE_ISTR2(popf,isf),
00254   DEFINE_ISTR2(prefetch0,s),
00255   DEFINE_ISTR2(prefetch1,s),
00256   DEFINE_ISTR2(prefetch2,s),
00257   DEFINE_ISTR2(prefetchnta,s),
00258   DEFINE_ISTR2(push,is),
00259   DEFINE_ISTR2(pusha,is),
00260   DEFINE_ISTR2(pushf,isf),
00261 
00262   DEFINE_ISTR2(movd,iM),   // MMX start
00263   DEFINE_ISTR2(movq,M),
00264   DEFINE_ISTR2(packssdw,M),
00265   DEFINE_ISTR2(packsswb,M),
00266   DEFINE_ISTR2(packusdw,M),
00267   DEFINE_ISTR2(paddb,M),
00268   DEFINE_ISTR2(paddd,M),
00269   DEFINE_ISTR2(paddsb,M),
00270   DEFINE_ISTR2(paddsw,M),
00271   DEFINE_ISTR2(paddusb,M),
00272   DEFINE_ISTR2(paddusw,M),
00273   DEFINE_ISTR2(paddw,M),
00274   DEFINE_ISTR2(pand,M),
00275   DEFINE_ISTR2(pandn,M),
00276   DEFINE_ISTR2(pavgb,M),
00277   DEFINE_ISTR2(pavgw,M),
00278   DEFINE_ISTR2(pcmpeqb,M),
00279   DEFINE_ISTR2(pcmpeqd,M),
00280   DEFINE_ISTR2(pcmpeqw,M),
00281   DEFINE_ISTR2(pcmpgtb,M),
00282   DEFINE_ISTR2(pcmpgtd,M),
00283   DEFINE_ISTR2(pcmpgtw,M),
00284   DEFINE_ISTR2(pinsrw,M),
00285   DEFINE_ISTR2(pminub,M),
00286   DEFINE_ISTR2(pminsw,M),
00287   DEFINE_ISTR2(pmaddwd,M),
00288   DEFINE_ISTR2(pmaxub,M),
00289   DEFINE_ISTR2(pmaxsw,M),
00290   DEFINE_ISTR2(pmulhuw,M),
00291   DEFINE_ISTR2(pmulhw,M),
00292   DEFINE_ISTR2(pmullw,M),
00293   DEFINE_ISTR2(por,M),
00294   DEFINE_ISTR2(psadbw,M),
00295   DEFINE_ISTR2(pshufw,M),
00296   DEFINE_ISTR2(pslld,M),
00297   DEFINE_ISTR2(psllq,M),
00298   DEFINE_ISTR2(psllw,M),
00299   DEFINE_ISTR2(psrad,M),
00300   DEFINE_ISTR2(psraw,M),
00301   DEFINE_ISTR2(psrld,M),
00302   DEFINE_ISTR2(psrlq,M),
00303   DEFINE_ISTR2(psrlw,M),
00304   DEFINE_ISTR2(psubb,M),
00305   DEFINE_ISTR2(psubd,M),
00306   DEFINE_ISTR2(psubsb,M),
00307   DEFINE_ISTR2(psubsw,M),
00308   DEFINE_ISTR2(psubusb,M),
00309   DEFINE_ISTR2(psubusw,M),
00310   DEFINE_ISTR2(psubw,M),
00311   DEFINE_ISTR2(punockldq,M),
00312   DEFINE_ISTR2(punpckhbw,M),
00313   DEFINE_ISTR2(punpckhdq,M),
00314   DEFINE_ISTR2(punpckhwd,M),
00315   DEFINE_ISTR2(punpcklbw,M),
00316   DEFINE_ISTR2(punpcklwd,M),
00317   DEFINE_ISTR2(pxor,M), // MMX end
00318 
00319   DEFINE_ISTR(movups),  // XMM
00320   DEFINE_ISTR(movaps),
00321   DEFINE_ISTR(movntps),
00322   DEFINE_ISTR(sqrtps),
00323   DEFINE_ISTR(rsqrtps),
00324   DEFINE_ISTR(rcpps),
00325   DEFINE_ISTR(andps),
00326   DEFINE_ISTR(andnps),
00327   DEFINE_ISTR(orps),
00328   DEFINE_ISTR(xorps),
00329   DEFINE_ISTR(addps),
00330   DEFINE_ISTR(mulps),
00331   DEFINE_ISTR(subps),
00332   DEFINE_ISTR(minps),
00333   DEFINE_ISTR(divps),
00334   DEFINE_ISTR(maxps),
00335   DEFINE_ISTR(cmpps),
00336   DEFINE_ISTR(shufps),
00337   DEFINE_ISTR(unpcklps),
00338   DEFINE_ISTR(unpckhps),
00339   DEFINE_ISTR(cvtpi2ps),
00340   DEFINE_ISTR(cvttps2pi),
00341   DEFINE_ISTR(cvtps2pi),
00342   DEFINE_ISTR(ucomiss),
00343   DEFINE_ISTR(comiss),
00344   DEFINE_ISTR(movmskps),
00345   DEFINE_ISTR(movlps),
00346   DEFINE_ISTR(movlhps),
00347   DEFINE_ISTR(movhps),
00348   DEFINE_ISTR(movhlps),
00349   DEFINE_ISTR(movss),
00350   DEFINE_ISTR(sqrtss),
00351   DEFINE_ISTR(rsqrtss),
00352   DEFINE_ISTR(rcpss),
00353   DEFINE_ISTR(cmpss),
00354   DEFINE_ISTR(cvtsi2ss),
00355   DEFINE_ISTR(cvttss2si),
00356   DEFINE_ISTR(cvtss2si),
00357   DEFINE_ISTR(addss),
00358   DEFINE_ISTR(mulss),
00359   DEFINE_ISTR(subss),
00360   DEFINE_ISTR(minss),
00361   DEFINE_ISTR(divss),
00362   DEFINE_ISTR(maxss),
00363 
00364   DEFINE_ISTR2(rcl,if),
00365   DEFINE_ISTR2(rcr,if),
00366   DEFINE_ISTR2(rdmsr,is),
00367   DEFINE_ISTR2(rdpmc,is),
00368   DEFINE_ISTR2(rdtsc,is),
00369   DEFINE_ISTR2(repnz,none), // speciali
00370   DEFINE_ISTR2(repz,none),
00371   DEFINE_ISTR2(ret,is), // esp
00372   DEFINE_ISTR2(retf,is),
00373   DEFINE_ISTR2(rol,if),
00374   DEFINE_ISTR2(ror,if),
00375   DEFINE_ISTR(rsm),
00376   DEFINE_ISTR2(sahf,isf),
00377   DEFINE_ISTR2(sar,if),
00378   DEFINE_ISTR2(sbb,if),
00379   DEFINE_ISTR2(scasb,isf),
00380   DEFINE_ISTR2(scasw,isf),
00381   DEFINE_ISTR2(scasd,isf),
00382   DEFINE_ISTR2(setb,if),  // speciali ?? overwrite 2 valori
00383   DEFINE_ISTR2(setbe,if),
00384   DEFINE_ISTR2(setl,if),
00385   DEFINE_ISTR2(setle,if),
00386   DEFINE_ISTR2(setnb,if),
00387   DEFINE_ISTR2(setnbe,if),
00388   DEFINE_ISTR2(setnl,if),
00389   DEFINE_ISTR2(setnle,if),
00390   DEFINE_ISTR2(setno,if),
00391   DEFINE_ISTR2(setnp,if),
00392   DEFINE_ISTR2(setns,if),
00393   DEFINE_ISTR2(setnz,if),
00394   DEFINE_ISTR2(seto,if),
00395   DEFINE_ISTR2(setp,if),
00396   DEFINE_ISTR2(sets,if),
00397   DEFINE_ISTR2(setz,if),
00398   DEFINE_ISTR2(sfence,s),
00399   DEFINE_ISTR(sgdt),
00400   DEFINE_ISTR2(shl,if),
00401   DEFINE_ISTR2(shld,if),
00402   DEFINE_ISTR2(shr,if),
00403   DEFINE_ISTR2(shrd,if),
00404   DEFINE_ISTR(sidt),
00405   DEFINE_ISTR(sldt),
00406   DEFINE_ISTR(smsw),
00407   DEFINE_ISTR2(stc,f),
00408   DEFINE_ISTR2(std,f),
00409   DEFINE_ISTR2(sti,f),
00410   DEFINE_ISTR(stmxcsr),
00411   DEFINE_ISTR2(stosb,is),
00412   DEFINE_ISTR2(stosw,is),
00413   DEFINE_ISTR2(stosd,is),
00414   DEFINE_ISTR(str),
00415   DEFINE_ISTR2(sub,if),
00416   DEFINE_ISTR2(sysenter,i),
00417   DEFINE_ISTR2(sysexit,i),
00418   DEFINE_ISTR2(test,if),
00419   DEFINE_ISTR(ud),
00420   DEFINE_ISTR(ud2),
00421   DEFINE_ISTR(verr),
00422   DEFINE_ISTR(verw),
00423   DEFINE_ISTR2(wait,none),
00424   DEFINE_ISTR2(wbinvd,none),
00425   DEFINE_ISTR2(wrmsr,is),
00426   DEFINE_ISTR2(xadd,isf), // scambia i valori
00427   DEFINE_ISTR2(xchg,is),
00428   DEFINE_ISTR2(xlat,is),
00429   DEFINE_ISTR2(xor,if),
00430 
00431   // 3D Now!
00432   DEFINE_ISTR(femms),
00433   DEFINE_ISTR(prefetch),
00434   DEFINE_ISTR(prefetchw),
00435   DEFINE_ISTR(pavgusb),
00436   DEFINE_ISTR(pf2id),
00437   DEFINE_ISTR(pf2iw),
00438   DEFINE_ISTR(pfacc),
00439   DEFINE_ISTR(pfadd),
00440   DEFINE_ISTR(pfcmpeq),
00441   DEFINE_ISTR(pfcmpge),
00442   DEFINE_ISTR(pfcmpgt),
00443   DEFINE_ISTR(pfmax),
00444   DEFINE_ISTR(pfmin),
00445   DEFINE_ISTR(pfmul),
00446   DEFINE_ISTR(pfnacc),
00447   DEFINE_ISTR(pfpnacc),
00448   DEFINE_ISTR(pfrcp),
00449   DEFINE_ISTR(pfrcpit1),
00450   DEFINE_ISTR(pfrcpit2),
00451   DEFINE_ISTR(pfrsqit1),
00452   DEFINE_ISTR(pfrsqrt),
00453   DEFINE_ISTR(pfsub),
00454   DEFINE_ISTR(pfsubr),
00455   DEFINE_ISTR(pi2fd),
00456   DEFINE_ISTR(pi2fw),
00457   DEFINE_ISTR(pmulhrw),
00458   DEFINE_ISTR(pswapd)
00459 END_ISTR
00460 

Generated on Mon Jan 13 22:20:35 2003 for perdr by doxygen1.2.15