dis_tables.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /////////////////////////////////////////////////////////////////////////
  2. // $Id: dis_tables.h 11878 2013-10-11 20:09:51Z sshwarts $
  3. /////////////////////////////////////////////////////////////////////////
  4. //
  5. // Copyright (c) 2005-2012 Stanislav Shwartsman
  6. // Written by Stanislav Shwartsman [sshwarts at sourceforge net]
  7. //
  8. // This library is free software; you can redistribute it and/or
  9. // modify it under the terms of the GNU Lesser General Public
  10. // License as published by the Free Software Foundation; either
  11. // version 2 of the License, or (at your option) any later version.
  12. //
  13. // This library is distributed in the hope that it will be useful,
  14. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. // Lesser General Public License for more details.
  17. //
  18. // You should have received a copy of the GNU Lesser General Public
  19. // License along with this library; if not, write to the Free Software
  20. // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  21. #ifndef _BX_DISASM_TABLES_
  22. #define _BX_DISASM_TABLES_
  23. // opcode table attributes
  24. #define _GROUPN 1
  25. #define _SPLIT11B 2
  26. #define _GRPFP 3
  27. #define _GRP3DNOW 4
  28. #define _GRPSSE 5
  29. #define _GRPSSE66 6
  30. #define _GRPSSEF2 7
  31. #define _GRPSSEF3 8
  32. #define _GRPSSENONE 9
  33. #define _GRPSSE2 10
  34. #define _GRPRM 11
  35. #define _GRP3BOP 12
  36. #define _GRP64B 13
  37. #define _GRPVEXW 14
  38. /* ************************************************************************ */
  39. #define GRPSSE(n) _GRPSSE, BxDisasmGroupSSE_##n
  40. #define GRPSSE2(n) _GRPSSE2, BxDisasmGroupSSE_##n
  41. #define GRPAVX(n) _GRPSSE, BxDisasmGroupAVX_##n
  42. #define GRPAVX2(n) _GRPSSE2, BxDisasmGroupAVX_##n
  43. #define GRPN(n) _GROUPN, BxDisasmGroup##n
  44. #define GRPRM(n) _GRPRM, BxDisasmGroupRm##n
  45. #define GRPMOD(n) _SPLIT11B, BxDisasmGroupMod##n
  46. #define GRPFP(n) _GRPFP, BxDisasmFPGroup##n
  47. #define GRP3DNOW _GRP3DNOW, BxDisasm3DNowGroup
  48. #define GR3BTAB(n) _GRP3BOP, BxDisasm3ByteOpTable##n
  49. #define GR64BIT(n) _GRP64B, BxDisasmGrpOs64B_##n
  50. #define GRPVEXW(n) _GRPVEXW, BxDisasmGrpVexW_##n
  51. /* ************************************************************************ */
  52. /* ************************************************************************ */
  53. #define GRPSSE66(n) _GRPSSE66, &n
  54. #define GRPSSEF2(n) _GRPSSEF2, &n
  55. #define GRPSSEF3(n) _GRPSSEF3, &n
  56. #define GRPSSENONE(n) _GRPSSENONE, &n
  57. /* ************************************************************************ */
  58. #define Apw &disassembler::Apw
  59. #define Apd &disassembler::Apd
  60. #define AL_Reg &disassembler::AL_Reg
  61. #define CL_Reg &disassembler::CL_Reg
  62. #define AX_Reg &disassembler::AX_Reg
  63. #define DX_Reg &disassembler::DX_Reg
  64. #define EAX_Reg &disassembler::EAX_Reg
  65. #define RAX_Reg &disassembler::RAX_Reg
  66. #define RCX_Reg &disassembler::RCX_Reg
  67. #define CS &disassembler::CS
  68. #define DS &disassembler::DS
  69. #define ES &disassembler::ES
  70. #define SS &disassembler::SS
  71. #define FS &disassembler::FS
  72. #define GS &disassembler::GS
  73. #define Sw &disassembler::Sw
  74. #define Cd &disassembler::Cd
  75. #define Cq &disassembler::Cq
  76. #define Dd &disassembler::Dd
  77. #define Dq &disassembler::Dq
  78. #define Reg8 &disassembler::Reg8
  79. #define RX &disassembler::RX
  80. #define ERX &disassembler::ERX
  81. #define RRX &disassembler::RRX
  82. #define Eb &disassembler::Eb
  83. #define Ew &disassembler::Ew
  84. #define Ed &disassembler::Ed
  85. #define Eq &disassembler::Eq
  86. #define Ey &disassembler::Ey
  87. #define Ebd &disassembler::Ebd
  88. #define Ewd &disassembler::Ewd
  89. #define Gb &disassembler::Gb
  90. #define Gw &disassembler::Gw
  91. #define Gd &disassembler::Gd
  92. #define Gq &disassembler::Gq
  93. #define Gy &disassembler::Gy
  94. #define By &disassembler::By
  95. #define I1 &disassembler::I1
  96. #define Ib &disassembler::Ib
  97. #define Iw &disassembler::Iw
  98. #define Id &disassembler::Id
  99. #define Iq &disassembler::Iq
  100. #define IbIb &disassembler::IbIb
  101. #define IwIb &disassembler::IwIb
  102. #define sIbw &disassembler::sIbw
  103. #define sIbd &disassembler::sIbd
  104. #define sIbq &disassembler::sIbq
  105. #define sIdq &disassembler::sIdq
  106. #define ST0 &disassembler::ST0
  107. #define STi &disassembler::STi
  108. #define Rw &disassembler::Rw
  109. #define Rd &disassembler::Rd
  110. #define Rq &disassembler::Rq
  111. #define Ry &disassembler::Ry
  112. #define Pq &disassembler::Pq
  113. #define Qd &disassembler::Qd
  114. #define Qq &disassembler::Qq
  115. #define Nq &disassembler::Nq
  116. #define Vq &disassembler::Vq
  117. #define Vdq &disassembler::Vdq
  118. #define Vss &disassembler::Vss
  119. #define Vsd &disassembler::Vsd
  120. #define Vps &disassembler::Vps
  121. #define Vpd &disassembler::Vpd
  122. #define VIb &disassembler::VIb
  123. #define Ups &disassembler::Ups
  124. #define Upd &disassembler::Upd
  125. #define Udq &disassembler::Udq
  126. #define Uq &disassembler::Uq
  127. #define Wb &disassembler::Wb
  128. #define Ww &disassembler::Ww
  129. #define Wd &disassembler::Wd
  130. #define Wq &disassembler::Wq
  131. #define Wdq &disassembler::Wdq
  132. #define Wss &disassembler::Wss
  133. #define Wsd &disassembler::Wsd
  134. #define Wps &disassembler::Wps
  135. #define Wpd &disassembler::Wpd
  136. #define Hdq &disassembler::Hdq
  137. #define Hps &disassembler::Hps
  138. #define Hpd &disassembler::Hpd
  139. #define Hss &disassembler::Hss
  140. #define Hsd &disassembler::Hsd
  141. #define Ob &disassembler::Ob
  142. #define Ow &disassembler::Ow
  143. #define Od &disassembler::Od
  144. #define Oq &disassembler::Oq
  145. #define Ma &disassembler::Ma
  146. #define Mp &disassembler::Mp
  147. #define Ms &disassembler::Ms
  148. #define Mx &disassembler::Mx
  149. #define Mb &disassembler::Mb
  150. #define Mw &disassembler::Mw
  151. #define Md &disassembler::Md
  152. #define Mq &disassembler::Mq
  153. #define Mt &disassembler::Mt
  154. #define Mdq &disassembler::Mdq
  155. #define Mps &disassembler::Mps
  156. #define Mpd &disassembler::Mpd
  157. #define Mss &disassembler::Mss
  158. #define Msd &disassembler::Msd
  159. #define VSib &disassembler::VSib
  160. #define Xb &disassembler::Xb
  161. #define Xw &disassembler::Xw
  162. #define Xd &disassembler::Xd
  163. #define Xq &disassembler::Xq
  164. #define Yb &disassembler::Yb
  165. #define Yw &disassembler::Yw
  166. #define Yd &disassembler::Yd
  167. #define Yq &disassembler::Yq
  168. #define sYq &disassembler::sYq
  169. #define sYdq &disassembler::sYdq
  170. #define Jb &disassembler::Jb
  171. #define Jw &disassembler::Jw
  172. #define Jd &disassembler::Jd
  173. #define XX 0
  174. const struct BxDisasmOpcodeInfo_t
  175. #include "opcodes.inc"
  176. #include "dis_tables_x87.inc"
  177. #include "dis_tables_sse.inc"
  178. #include "dis_tables_avx.inc"
  179. #include "dis_tables_xop.inc"
  180. #include "dis_tables.inc"
  181. #undef XX
  182. #endif