Make your own free website on Tripod.com
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: http://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