1 /* udis86 - libudis86/itab.h
2  *
3  * Copyright (c) 2002-2013 Vivek Thampi
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without modification, 
7  * are permitted provided that the following conditions are met:
8  *
9  *     * Redistributions of source code must retain the above copyright notice, 
10  *       this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above copyright notice, 
12  *       this list of conditions and the following disclaimer in the documentation 
13  *       and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
18  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
22  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27  module udis86.c.itab;
28 
29 enum ud_table_type
30 {
31   UD_TAB__OPC_TABLE,
32   UD_TAB__OPC_X87,
33   UD_TAB__OPC_MOD,
34   UD_TAB__OPC_VEX_M,
35   UD_TAB__OPC_VEX_P,
36   UD_TAB__OPC_RM,
37   UD_TAB__OPC_VENDOR,
38   UD_TAB__OPC_OSIZE,
39   UD_TAB__OPC_MODE,
40   UD_TAB__OPC_3DNOW,
41   UD_TAB__OPC_REG,
42   UD_TAB__OPC_ASIZE,
43   UD_TAB__OPC_SSE,
44 }
45 
46 enum ud_mnemonic_code
47 {
48   UD_Iinvalid,
49   UD_I3dnow,
50   UD_Inone,
51   UD_Idb,
52   UD_Ipause,
53   UD_Iaaa,
54   UD_Iaad,
55   UD_Iaam,
56   UD_Iaas,
57   UD_Iadc,
58   UD_Iadd,
59   UD_Iaddpd,
60   UD_Iaddps,
61   UD_Iaddsd,
62   UD_Iaddss,
63   UD_Iand,
64   UD_Iandpd,
65   UD_Iandps,
66   UD_Iandnpd,
67   UD_Iandnps,
68   UD_Iarpl,
69   UD_Imovsxd,
70   UD_Ibound,
71   UD_Ibsf,
72   UD_Ibsr,
73   UD_Ibswap,
74   UD_Ibt,
75   UD_Ibtc,
76   UD_Ibtr,
77   UD_Ibts,
78   UD_Icall,
79   UD_Icbw,
80   UD_Icwde,
81   UD_Icdqe,
82   UD_Iclc,
83   UD_Icld,
84   UD_Iclflush,
85   UD_Iclgi,
86   UD_Icli,
87   UD_Iclts,
88   UD_Icmc,
89   UD_Icmovo,
90   UD_Icmovno,
91   UD_Icmovb,
92   UD_Icmovae,
93   UD_Icmovz,
94   UD_Icmovnz,
95   UD_Icmovbe,
96   UD_Icmova,
97   UD_Icmovs,
98   UD_Icmovns,
99   UD_Icmovp,
100   UD_Icmovnp,
101   UD_Icmovl,
102   UD_Icmovge,
103   UD_Icmovle,
104   UD_Icmovg,
105   UD_Icmp,
106   UD_Icmppd,
107   UD_Icmpps,
108   UD_Icmpsb,
109   UD_Icmpsw,
110   UD_Icmpsd,
111   UD_Icmpsq,
112   UD_Icmpss,
113   UD_Icmpxchg,
114   UD_Icmpxchg8b,
115   UD_Icmpxchg16b,
116   UD_Icomisd,
117   UD_Icomiss,
118   UD_Icpuid,
119   UD_Icvtdq2pd,
120   UD_Icvtdq2ps,
121   UD_Icvtpd2dq,
122   UD_Icvtpd2pi,
123   UD_Icvtpd2ps,
124   UD_Icvtpi2ps,
125   UD_Icvtpi2pd,
126   UD_Icvtps2dq,
127   UD_Icvtps2pi,
128   UD_Icvtps2pd,
129   UD_Icvtsd2si,
130   UD_Icvtsd2ss,
131   UD_Icvtsi2ss,
132   UD_Icvtss2si,
133   UD_Icvtss2sd,
134   UD_Icvttpd2pi,
135   UD_Icvttpd2dq,
136   UD_Icvttps2dq,
137   UD_Icvttps2pi,
138   UD_Icvttsd2si,
139   UD_Icvtsi2sd,
140   UD_Icvttss2si,
141   UD_Icwd,
142   UD_Icdq,
143   UD_Icqo,
144   UD_Idaa,
145   UD_Idas,
146   UD_Idec,
147   UD_Idiv,
148   UD_Idivpd,
149   UD_Idivps,
150   UD_Idivsd,
151   UD_Idivss,
152   UD_Iemms,
153   UD_Ienter,
154   UD_If2xm1,
155   UD_Ifabs,
156   UD_Ifadd,
157   UD_Ifaddp,
158   UD_Ifbld,
159   UD_Ifbstp,
160   UD_Ifchs,
161   UD_Ifclex,
162   UD_Ifcmovb,
163   UD_Ifcmove,
164   UD_Ifcmovbe,
165   UD_Ifcmovu,
166   UD_Ifcmovnb,
167   UD_Ifcmovne,
168   UD_Ifcmovnbe,
169   UD_Ifcmovnu,
170   UD_Ifucomi,
171   UD_Ifcom,
172   UD_Ifcom2,
173   UD_Ifcomp3,
174   UD_Ifcomi,
175   UD_Ifucomip,
176   UD_Ifcomip,
177   UD_Ifcomp,
178   UD_Ifcomp5,
179   UD_Ifcompp,
180   UD_Ifcos,
181   UD_Ifdecstp,
182   UD_Ifdiv,
183   UD_Ifdivp,
184   UD_Ifdivr,
185   UD_Ifdivrp,
186   UD_Ifemms,
187   UD_Iffree,
188   UD_Iffreep,
189   UD_Ificom,
190   UD_Ificomp,
191   UD_Ifild,
192   UD_Ifincstp,
193   UD_Ifninit,
194   UD_Ifiadd,
195   UD_Ifidivr,
196   UD_Ifidiv,
197   UD_Ifisub,
198   UD_Ifisubr,
199   UD_Ifist,
200   UD_Ifistp,
201   UD_Ifisttp,
202   UD_Ifld,
203   UD_Ifld1,
204   UD_Ifldl2t,
205   UD_Ifldl2e,
206   UD_Ifldpi,
207   UD_Ifldlg2,
208   UD_Ifldln2,
209   UD_Ifldz,
210   UD_Ifldcw,
211   UD_Ifldenv,
212   UD_Ifmul,
213   UD_Ifmulp,
214   UD_Ifimul,
215   UD_Ifnop,
216   UD_Ifpatan,
217   UD_Ifprem,
218   UD_Ifprem1,
219   UD_Ifptan,
220   UD_Ifrndint,
221   UD_Ifrstor,
222   UD_Ifnsave,
223   UD_Ifscale,
224   UD_Ifsin,
225   UD_Ifsincos,
226   UD_Ifsqrt,
227   UD_Ifstp,
228   UD_Ifstp1,
229   UD_Ifstp8,
230   UD_Ifstp9,
231   UD_Ifst,
232   UD_Ifnstcw,
233   UD_Ifnstenv,
234   UD_Ifnstsw,
235   UD_Ifsub,
236   UD_Ifsubp,
237   UD_Ifsubr,
238   UD_Ifsubrp,
239   UD_Iftst,
240   UD_Ifucom,
241   UD_Ifucomp,
242   UD_Ifucompp,
243   UD_Ifxam,
244   UD_Ifxch,
245   UD_Ifxch4,
246   UD_Ifxch7,
247   UD_Ifxrstor,
248   UD_Ifxsave,
249   UD_Ifxtract,
250   UD_Ifyl2x,
251   UD_Ifyl2xp1,
252   UD_Ihlt,
253   UD_Iidiv,
254   UD_Iin,
255   UD_Iimul,
256   UD_Iinc,
257   UD_Iinsb,
258   UD_Iinsw,
259   UD_Iinsd,
260   UD_Iint1,
261   UD_Iint3,
262   UD_Iint,
263   UD_Iinto,
264   UD_Iinvd,
265   UD_Iinvept,
266   UD_Iinvlpg,
267   UD_Iinvlpga,
268   UD_Iinvvpid,
269   UD_Iiretw,
270   UD_Iiretd,
271   UD_Iiretq,
272   UD_Ijo,
273   UD_Ijno,
274   UD_Ijb,
275   UD_Ijae,
276   UD_Ijz,
277   UD_Ijnz,
278   UD_Ijbe,
279   UD_Ija,
280   UD_Ijs,
281   UD_Ijns,
282   UD_Ijp,
283   UD_Ijnp,
284   UD_Ijl,
285   UD_Ijge,
286   UD_Ijle,
287   UD_Ijg,
288   UD_Ijcxz,
289   UD_Ijecxz,
290   UD_Ijrcxz,
291   UD_Ijmp,
292   UD_Ilahf,
293   UD_Ilar,
294   UD_Ilddqu,
295   UD_Ildmxcsr,
296   UD_Ilds,
297   UD_Ilea,
298   UD_Iles,
299   UD_Ilfs,
300   UD_Ilgs,
301   UD_Ilidt,
302   UD_Ilss,
303   UD_Ileave,
304   UD_Ilfence,
305   UD_Ilgdt,
306   UD_Illdt,
307   UD_Ilmsw,
308   UD_Ilock,
309   UD_Ilodsb,
310   UD_Ilodsw,
311   UD_Ilodsd,
312   UD_Ilodsq,
313   UD_Iloopne,
314   UD_Iloope,
315   UD_Iloop,
316   UD_Ilsl,
317   UD_Iltr,
318   UD_Imaskmovq,
319   UD_Imaxpd,
320   UD_Imaxps,
321   UD_Imaxsd,
322   UD_Imaxss,
323   UD_Imfence,
324   UD_Iminpd,
325   UD_Iminps,
326   UD_Iminsd,
327   UD_Iminss,
328   UD_Imonitor,
329   UD_Imontmul,
330   UD_Imov,
331   UD_Imovapd,
332   UD_Imovaps,
333   UD_Imovd,
334   UD_Imovhpd,
335   UD_Imovhps,
336   UD_Imovlhps,
337   UD_Imovlpd,
338   UD_Imovlps,
339   UD_Imovhlps,
340   UD_Imovmskpd,
341   UD_Imovmskps,
342   UD_Imovntdq,
343   UD_Imovnti,
344   UD_Imovntpd,
345   UD_Imovntps,
346   UD_Imovntq,
347   UD_Imovq,
348   UD_Imovsb,
349   UD_Imovsw,
350   UD_Imovsd,
351   UD_Imovsq,
352   UD_Imovss,
353   UD_Imovsx,
354   UD_Imovupd,
355   UD_Imovups,
356   UD_Imovzx,
357   UD_Imul,
358   UD_Imulpd,
359   UD_Imulps,
360   UD_Imulsd,
361   UD_Imulss,
362   UD_Imwait,
363   UD_Ineg,
364   UD_Inop,
365   UD_Inot,
366   UD_Ior,
367   UD_Iorpd,
368   UD_Iorps,
369   UD_Iout,
370   UD_Ioutsb,
371   UD_Ioutsw,
372   UD_Ioutsd,
373   UD_Ipacksswb,
374   UD_Ipackssdw,
375   UD_Ipackuswb,
376   UD_Ipaddb,
377   UD_Ipaddw,
378   UD_Ipaddd,
379   UD_Ipaddsb,
380   UD_Ipaddsw,
381   UD_Ipaddusb,
382   UD_Ipaddusw,
383   UD_Ipand,
384   UD_Ipandn,
385   UD_Ipavgb,
386   UD_Ipavgw,
387   UD_Ipcmpeqb,
388   UD_Ipcmpeqw,
389   UD_Ipcmpeqd,
390   UD_Ipcmpgtb,
391   UD_Ipcmpgtw,
392   UD_Ipcmpgtd,
393   UD_Ipextrb,
394   UD_Ipextrd,
395   UD_Ipextrq,
396   UD_Ipextrw,
397   UD_Ipinsrb,
398   UD_Ipinsrw,
399   UD_Ipinsrd,
400   UD_Ipinsrq,
401   UD_Ipmaddwd,
402   UD_Ipmaxsw,
403   UD_Ipmaxub,
404   UD_Ipminsw,
405   UD_Ipminub,
406   UD_Ipmovmskb,
407   UD_Ipmulhuw,
408   UD_Ipmulhw,
409   UD_Ipmullw,
410   UD_Ipop,
411   UD_Ipopa,
412   UD_Ipopad,
413   UD_Ipopfw,
414   UD_Ipopfd,
415   UD_Ipopfq,
416   UD_Ipor,
417   UD_Iprefetch,
418   UD_Iprefetchnta,
419   UD_Iprefetcht0,
420   UD_Iprefetcht1,
421   UD_Iprefetcht2,
422   UD_Ipsadbw,
423   UD_Ipshufw,
424   UD_Ipsllw,
425   UD_Ipslld,
426   UD_Ipsllq,
427   UD_Ipsraw,
428   UD_Ipsrad,
429   UD_Ipsrlw,
430   UD_Ipsrld,
431   UD_Ipsrlq,
432   UD_Ipsubb,
433   UD_Ipsubw,
434   UD_Ipsubd,
435   UD_Ipsubsb,
436   UD_Ipsubsw,
437   UD_Ipsubusb,
438   UD_Ipsubusw,
439   UD_Ipunpckhbw,
440   UD_Ipunpckhwd,
441   UD_Ipunpckhdq,
442   UD_Ipunpcklbw,
443   UD_Ipunpcklwd,
444   UD_Ipunpckldq,
445   UD_Ipi2fw,
446   UD_Ipi2fd,
447   UD_Ipf2iw,
448   UD_Ipf2id,
449   UD_Ipfnacc,
450   UD_Ipfpnacc,
451   UD_Ipfcmpge,
452   UD_Ipfmin,
453   UD_Ipfrcp,
454   UD_Ipfrsqrt,
455   UD_Ipfsub,
456   UD_Ipfadd,
457   UD_Ipfcmpgt,
458   UD_Ipfmax,
459   UD_Ipfrcpit1,
460   UD_Ipfrsqit1,
461   UD_Ipfsubr,
462   UD_Ipfacc,
463   UD_Ipfcmpeq,
464   UD_Ipfmul,
465   UD_Ipfrcpit2,
466   UD_Ipmulhrw,
467   UD_Ipswapd,
468   UD_Ipavgusb,
469   UD_Ipush,
470   UD_Ipusha,
471   UD_Ipushad,
472   UD_Ipushfw,
473   UD_Ipushfd,
474   UD_Ipushfq,
475   UD_Ipxor,
476   UD_Ircl,
477   UD_Ircr,
478   UD_Irol,
479   UD_Iror,
480   UD_Ircpps,
481   UD_Ircpss,
482   UD_Irdmsr,
483   UD_Irdpmc,
484   UD_Irdtsc,
485   UD_Irdtscp,
486   UD_Irepne,
487   UD_Irep,
488   UD_Iret,
489   UD_Iretf,
490   UD_Irsm,
491   UD_Irsqrtps,
492   UD_Irsqrtss,
493   UD_Isahf,
494   UD_Isalc,
495   UD_Isar,
496   UD_Ishl,
497   UD_Ishr,
498   UD_Isbb,
499   UD_Iscasb,
500   UD_Iscasw,
501   UD_Iscasd,
502   UD_Iscasq,
503   UD_Iseto,
504   UD_Isetno,
505   UD_Isetb,
506   UD_Isetae,
507   UD_Isetz,
508   UD_Isetnz,
509   UD_Isetbe,
510   UD_Iseta,
511   UD_Isets,
512   UD_Isetns,
513   UD_Isetp,
514   UD_Isetnp,
515   UD_Isetl,
516   UD_Isetge,
517   UD_Isetle,
518   UD_Isetg,
519   UD_Isfence,
520   UD_Isgdt,
521   UD_Ishld,
522   UD_Ishrd,
523   UD_Ishufpd,
524   UD_Ishufps,
525   UD_Isidt,
526   UD_Isldt,
527   UD_Ismsw,
528   UD_Isqrtps,
529   UD_Isqrtpd,
530   UD_Isqrtsd,
531   UD_Isqrtss,
532   UD_Istc,
533   UD_Istd,
534   UD_Istgi,
535   UD_Isti,
536   UD_Iskinit,
537   UD_Istmxcsr,
538   UD_Istosb,
539   UD_Istosw,
540   UD_Istosd,
541   UD_Istosq,
542   UD_Istr,
543   UD_Isub,
544   UD_Isubpd,
545   UD_Isubps,
546   UD_Isubsd,
547   UD_Isubss,
548   UD_Iswapgs,
549   UD_Isyscall,
550   UD_Isysenter,
551   UD_Isysexit,
552   UD_Isysret,
553   UD_Itest,
554   UD_Iucomisd,
555   UD_Iucomiss,
556   UD_Iud2,
557   UD_Iunpckhpd,
558   UD_Iunpckhps,
559   UD_Iunpcklps,
560   UD_Iunpcklpd,
561   UD_Iverr,
562   UD_Iverw,
563   UD_Ivmcall,
564   UD_Ivmclear,
565   UD_Ivmxon,
566   UD_Ivmptrld,
567   UD_Ivmptrst,
568   UD_Ivmlaunch,
569   UD_Ivmresume,
570   UD_Ivmxoff,
571   UD_Ivmread,
572   UD_Ivmwrite,
573   UD_Ivmrun,
574   UD_Ivmmcall,
575   UD_Ivmload,
576   UD_Ivmsave,
577   UD_Iwait,
578   UD_Iwbinvd,
579   UD_Iwrmsr,
580   UD_Ixadd,
581   UD_Ixchg,
582   UD_Ixgetbv,
583   UD_Ixlatb,
584   UD_Ixor,
585   UD_Ixorpd,
586   UD_Ixorps,
587   UD_Ixcryptecb,
588   UD_Ixcryptcbc,
589   UD_Ixcryptctr,
590   UD_Ixcryptcfb,
591   UD_Ixcryptofb,
592   UD_Ixrstor,
593   UD_Ixsave,
594   UD_Ixsetbv,
595   UD_Ixsha1,
596   UD_Ixsha256,
597   UD_Ixstore,
598   UD_Iaesdec,
599   UD_Iaesdeclast,
600   UD_Iaesenc,
601   UD_Iaesenclast,
602   UD_Iaesimc,
603   UD_Iaeskeygenassist,
604   UD_Ipclmulqdq,
605   UD_Igetsec,
606   UD_Imovdqa,
607   UD_Imaskmovdqu,
608   UD_Imovdq2q,
609   UD_Imovdqu,
610   UD_Imovq2dq,
611   UD_Ipaddq,
612   UD_Ipsubq,
613   UD_Ipmuludq,
614   UD_Ipshufhw,
615   UD_Ipshuflw,
616   UD_Ipshufd,
617   UD_Ipslldq,
618   UD_Ipsrldq,
619   UD_Ipunpckhqdq,
620   UD_Ipunpcklqdq,
621   UD_Iaddsubpd,
622   UD_Iaddsubps,
623   UD_Ihaddpd,
624   UD_Ihaddps,
625   UD_Ihsubpd,
626   UD_Ihsubps,
627   UD_Imovddup,
628   UD_Imovshdup,
629   UD_Imovsldup,
630   UD_Ipabsb,
631   UD_Ipabsw,
632   UD_Ipabsd,
633   UD_Ipshufb,
634   UD_Iphaddw,
635   UD_Iphaddd,
636   UD_Iphaddsw,
637   UD_Ipmaddubsw,
638   UD_Iphsubw,
639   UD_Iphsubd,
640   UD_Iphsubsw,
641   UD_Ipsignb,
642   UD_Ipsignd,
643   UD_Ipsignw,
644   UD_Ipmulhrsw,
645   UD_Ipalignr,
646   UD_Ipblendvb,
647   UD_Ipmuldq,
648   UD_Ipminsb,
649   UD_Ipminsd,
650   UD_Ipminuw,
651   UD_Ipminud,
652   UD_Ipmaxsb,
653   UD_Ipmaxsd,
654   UD_Ipmaxud,
655   UD_Ipmaxuw,
656   UD_Ipmulld,
657   UD_Iphminposuw,
658   UD_Iroundps,
659   UD_Iroundpd,
660   UD_Iroundss,
661   UD_Iroundsd,
662   UD_Iblendpd,
663   UD_Ipblendw,
664   UD_Iblendps,
665   UD_Iblendvpd,
666   UD_Iblendvps,
667   UD_Idpps,
668   UD_Idppd,
669   UD_Impsadbw,
670   UD_Iextractps,
671   UD_Iinsertps,
672   UD_Imovntdqa,
673   UD_Ipackusdw,
674   UD_Ipmovsxbw,
675   UD_Ipmovsxbd,
676   UD_Ipmovsxbq,
677   UD_Ipmovsxwd,
678   UD_Ipmovsxwq,
679   UD_Ipmovsxdq,
680   UD_Ipmovzxbw,
681   UD_Ipmovzxbd,
682   UD_Ipmovzxbq,
683   UD_Ipmovzxwd,
684   UD_Ipmovzxwq,
685   UD_Ipmovzxdq,
686   UD_Ipcmpeqq,
687   UD_Ipopcnt,
688   UD_Iptest,
689   UD_Ipcmpestri,
690   UD_Ipcmpestrm,
691   UD_Ipcmpgtq,
692   UD_Ipcmpistri,
693   UD_Ipcmpistrm,
694   UD_Imovbe,
695   UD_Icrc32,
696   UD_MAX_MNEMONIC_CODE,
697 }
698 
699 extern(C) extern __gshared const(char)** ud_mnemonics_str;