dis_tables_x87.inc 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920
  1. /////////////////////////////////////////////////////////////////////////
  2. // $Id: dis_tables_x87.inc 10298 2011-04-03 10:29:19Z vruppert $
  3. /////////////////////////////////////////////////////////////////////////
  4. //
  5. // Copyright (c) 2005-2010 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. //
  22. /////////////////////////////////////////////////////////////////////////
  23. /* ************************************************************************ */
  24. /* 3DNow! opcodes */
  25. static BxDisasmOpcodeTable_t BxDisasm3DNowGroup[256] = {
  26. // 256 entries for 3DNow opcodes_by suffix
  27. /* 00 */ { 0, &Ia_Invalid },
  28. /* 01 */ { 0, &Ia_Invalid },
  29. /* 02 */ { 0, &Ia_Invalid },
  30. /* 03 */ { 0, &Ia_Invalid },
  31. /* 04 */ { 0, &Ia_Invalid },
  32. /* 05 */ { 0, &Ia_Invalid },
  33. /* 06 */ { 0, &Ia_Invalid },
  34. /* 07 */ { 0, &Ia_Invalid },
  35. /* 08 */ { 0, &Ia_Invalid },
  36. /* 09 */ { 0, &Ia_Invalid },
  37. /* 0A */ { 0, &Ia_Invalid },
  38. /* 0B */ { 0, &Ia_Invalid },
  39. /* 0C */ { 0, &Ia_pi2fw_Pq_Qq },
  40. /* 0D */ { 0, &Ia_pi2fd_Pq_Qq },
  41. /* 0E */ { 0, &Ia_Invalid },
  42. /* 0F */ { 0, &Ia_Invalid },
  43. /* 10 */ { 0, &Ia_Invalid },
  44. /* 11 */ { 0, &Ia_Invalid },
  45. /* 12 */ { 0, &Ia_Invalid },
  46. /* 13 */ { 0, &Ia_Invalid },
  47. /* 14 */ { 0, &Ia_Invalid },
  48. /* 15 */ { 0, &Ia_Invalid },
  49. /* 16 */ { 0, &Ia_Invalid },
  50. /* 17 */ { 0, &Ia_Invalid },
  51. /* 18 */ { 0, &Ia_Invalid },
  52. /* 19 */ { 0, &Ia_Invalid },
  53. /* 1A */ { 0, &Ia_Invalid },
  54. /* 1B */ { 0, &Ia_Invalid },
  55. /* 1C */ { 0, &Ia_pf2iw_Pq_Qq },
  56. /* 1D */ { 0, &Ia_pf2id_Pq_Qq },
  57. /* 1E */ { 0, &Ia_Invalid },
  58. /* 1F */ { 0, &Ia_Invalid },
  59. /* 20 */ { 0, &Ia_Invalid },
  60. /* 21 */ { 0, &Ia_Invalid },
  61. /* 22 */ { 0, &Ia_Invalid },
  62. /* 23 */ { 0, &Ia_Invalid },
  63. /* 24 */ { 0, &Ia_Invalid },
  64. /* 25 */ { 0, &Ia_Invalid },
  65. /* 26 */ { 0, &Ia_Invalid },
  66. /* 27 */ { 0, &Ia_Invalid },
  67. /* 28 */ { 0, &Ia_Invalid },
  68. /* 29 */ { 0, &Ia_Invalid },
  69. /* 2A */ { 0, &Ia_Invalid },
  70. /* 2B */ { 0, &Ia_Invalid },
  71. /* 2C */ { 0, &Ia_Invalid },
  72. /* 2D */ { 0, &Ia_Invalid },
  73. /* 2E */ { 0, &Ia_Invalid },
  74. /* 2F */ { 0, &Ia_Invalid },
  75. /* 30 */ { 0, &Ia_Invalid },
  76. /* 31 */ { 0, &Ia_Invalid },
  77. /* 32 */ { 0, &Ia_Invalid },
  78. /* 33 */ { 0, &Ia_Invalid },
  79. /* 34 */ { 0, &Ia_Invalid },
  80. /* 35 */ { 0, &Ia_Invalid },
  81. /* 36 */ { 0, &Ia_Invalid },
  82. /* 37 */ { 0, &Ia_Invalid },
  83. /* 38 */ { 0, &Ia_Invalid },
  84. /* 39 */ { 0, &Ia_Invalid },
  85. /* 3A */ { 0, &Ia_Invalid },
  86. /* 3B */ { 0, &Ia_Invalid },
  87. /* 3C */ { 0, &Ia_Invalid },
  88. /* 3D */ { 0, &Ia_Invalid },
  89. /* 3E */ { 0, &Ia_Invalid },
  90. /* 3F */ { 0, &Ia_Invalid },
  91. /* 40 */ { 0, &Ia_Invalid },
  92. /* 41 */ { 0, &Ia_Invalid },
  93. /* 42 */ { 0, &Ia_Invalid },
  94. /* 43 */ { 0, &Ia_Invalid },
  95. /* 44 */ { 0, &Ia_Invalid },
  96. /* 45 */ { 0, &Ia_Invalid },
  97. /* 46 */ { 0, &Ia_Invalid },
  98. /* 47 */ { 0, &Ia_Invalid },
  99. /* 48 */ { 0, &Ia_Invalid },
  100. /* 49 */ { 0, &Ia_Invalid },
  101. /* 4A */ { 0, &Ia_Invalid },
  102. /* 4B */ { 0, &Ia_Invalid },
  103. /* 4C */ { 0, &Ia_Invalid },
  104. /* 4D */ { 0, &Ia_Invalid },
  105. /* 4E */ { 0, &Ia_Invalid },
  106. /* 4F */ { 0, &Ia_Invalid },
  107. /* 50 */ { 0, &Ia_Invalid },
  108. /* 51 */ { 0, &Ia_Invalid },
  109. /* 52 */ { 0, &Ia_Invalid },
  110. /* 53 */ { 0, &Ia_Invalid },
  111. /* 54 */ { 0, &Ia_Invalid },
  112. /* 55 */ { 0, &Ia_Invalid },
  113. /* 56 */ { 0, &Ia_Invalid },
  114. /* 57 */ { 0, &Ia_Invalid },
  115. /* 58 */ { 0, &Ia_Invalid },
  116. /* 59 */ { 0, &Ia_Invalid },
  117. /* 5A */ { 0, &Ia_Invalid },
  118. /* 5B */ { 0, &Ia_Invalid },
  119. /* 5C */ { 0, &Ia_Invalid },
  120. /* 5D */ { 0, &Ia_Invalid },
  121. /* 5E */ { 0, &Ia_Invalid },
  122. /* 5F */ { 0, &Ia_Invalid },
  123. /* 60 */ { 0, &Ia_Invalid },
  124. /* 61 */ { 0, &Ia_Invalid },
  125. /* 62 */ { 0, &Ia_Invalid },
  126. /* 63 */ { 0, &Ia_Invalid },
  127. /* 64 */ { 0, &Ia_Invalid },
  128. /* 65 */ { 0, &Ia_Invalid },
  129. /* 66 */ { 0, &Ia_Invalid },
  130. /* 67 */ { 0, &Ia_Invalid },
  131. /* 68 */ { 0, &Ia_Invalid },
  132. /* 69 */ { 0, &Ia_Invalid },
  133. /* 6A */ { 0, &Ia_Invalid },
  134. /* 6B */ { 0, &Ia_Invalid },
  135. /* 6C */ { 0, &Ia_Invalid },
  136. /* 6D */ { 0, &Ia_Invalid },
  137. /* 6E */ { 0, &Ia_Invalid },
  138. /* 6F */ { 0, &Ia_Invalid },
  139. /* 70 */ { 0, &Ia_Invalid },
  140. /* 71 */ { 0, &Ia_Invalid },
  141. /* 72 */ { 0, &Ia_Invalid },
  142. /* 73 */ { 0, &Ia_Invalid },
  143. /* 74 */ { 0, &Ia_Invalid },
  144. /* 75 */ { 0, &Ia_Invalid },
  145. /* 76 */ { 0, &Ia_Invalid },
  146. /* 77 */ { 0, &Ia_Invalid },
  147. /* 78 */ { 0, &Ia_Invalid },
  148. /* 79 */ { 0, &Ia_Invalid },
  149. /* 7A */ { 0, &Ia_Invalid },
  150. /* 7B */ { 0, &Ia_Invalid },
  151. /* 7C */ { 0, &Ia_Invalid },
  152. /* 7D */ { 0, &Ia_Invalid },
  153. /* 7E */ { 0, &Ia_Invalid },
  154. /* 7F */ { 0, &Ia_Invalid },
  155. /* 80 */ { 0, &Ia_Invalid },
  156. /* 81 */ { 0, &Ia_Invalid },
  157. /* 82 */ { 0, &Ia_Invalid },
  158. /* 83 */ { 0, &Ia_Invalid },
  159. /* 84 */ { 0, &Ia_Invalid },
  160. /* 85 */ { 0, &Ia_Invalid },
  161. /* 86 */ { 0, &Ia_Invalid },
  162. /* 87 */ { 0, &Ia_Invalid },
  163. /* 88 */ { 0, &Ia_Invalid },
  164. /* 89 */ { 0, &Ia_Invalid },
  165. /* 8A */ { 0, &Ia_pfnacc_Pq_Qq },
  166. /* 8B */ { 0, &Ia_Invalid },
  167. /* 8C */ { 0, &Ia_Invalid },
  168. /* 8D */ { 0, &Ia_Invalid },
  169. /* 8E */ { 0, &Ia_pfpnacc_Pq_Qq },
  170. /* 8F */ { 0, &Ia_Invalid },
  171. /* 90 */ { 0, &Ia_pfcmpge_Pq_Qq },
  172. /* 91 */ { 0, &Ia_Invalid },
  173. /* 92 */ { 0, &Ia_Invalid },
  174. /* 93 */ { 0, &Ia_Invalid },
  175. /* 94 */ { 0, &Ia_pfmin_Pq_Qq },
  176. /* 95 */ { 0, &Ia_Invalid },
  177. /* 96 */ { 0, &Ia_pfrcp_Pq_Qq },
  178. /* 97 */ { 0, &Ia_pfrsqrt_Pq_Qq },
  179. /* 98 */ { 0, &Ia_Invalid },
  180. /* 99 */ { 0, &Ia_Invalid },
  181. /* 9A */ { 0, &Ia_pfsub_Pq_Qq },
  182. /* 9B */ { 0, &Ia_Invalid },
  183. /* 9C */ { 0, &Ia_Invalid },
  184. /* 9D */ { 0, &Ia_Invalid },
  185. /* 9E */ { 0, &Ia_pfadd_Pq_Qq },
  186. /* 9F */ { 0, &Ia_Invalid },
  187. /* A0 */ { 0, &Ia_pfcmpgt_Pq_Qq },
  188. /* A1 */ { 0, &Ia_Invalid },
  189. /* A2 */ { 0, &Ia_Invalid },
  190. /* A3 */ { 0, &Ia_Invalid },
  191. /* A4 */ { 0, &Ia_pfmax_Pq_Qq },
  192. /* A5 */ { 0, &Ia_Invalid },
  193. /* A6 */ { 0, &Ia_pfrcpit1_Pq_Qq },
  194. /* A7 */ { 0, &Ia_pfrsqit1_Pq_Qq },
  195. /* A8 */ { 0, &Ia_Invalid },
  196. /* A9 */ { 0, &Ia_Invalid },
  197. /* AA */ { 0, &Ia_pfsubr_Pq_Qq },
  198. /* AB */ { 0, &Ia_Invalid },
  199. /* AC */ { 0, &Ia_Invalid },
  200. /* AD */ { 0, &Ia_Invalid },
  201. /* AE */ { 0, &Ia_pfacc_Pq_Qq },
  202. /* AF */ { 0, &Ia_Invalid },
  203. /* B0 */ { 0, &Ia_pfcmpeq_Pq_Qq },
  204. /* B1 */ { 0, &Ia_Invalid },
  205. /* B2 */ { 0, &Ia_Invalid },
  206. /* B3 */ { 0, &Ia_Invalid },
  207. /* B4 */ { 0, &Ia_pfmul_Pq_Qq },
  208. /* B5 */ { 0, &Ia_Invalid },
  209. /* B6 */ { 0, &Ia_pfrcpit2_Pq_Qq },
  210. /* B7 */ { 0, &Ia_pmulhrw_Pq_Qq },
  211. /* B8 */ { 0, &Ia_Invalid },
  212. /* B9 */ { 0, &Ia_Invalid },
  213. /* BA */ { 0, &Ia_Invalid },
  214. /* BB */ { 0, &Ia_pswapd_Pq_Qq },
  215. /* BC */ { 0, &Ia_Invalid },
  216. /* BD */ { 0, &Ia_Invalid },
  217. /* BE */ { 0, &Ia_Invalid },
  218. /* BF */ { 0, &Ia_pavgb_Pq_Qq },
  219. /* C0 */ { 0, &Ia_Invalid },
  220. /* C1 */ { 0, &Ia_Invalid },
  221. /* C2 */ { 0, &Ia_Invalid },
  222. /* C3 */ { 0, &Ia_Invalid },
  223. /* C4 */ { 0, &Ia_Invalid },
  224. /* C5 */ { 0, &Ia_Invalid },
  225. /* C6 */ { 0, &Ia_Invalid },
  226. /* C7 */ { 0, &Ia_Invalid },
  227. /* C8 */ { 0, &Ia_Invalid },
  228. /* C9 */ { 0, &Ia_Invalid },
  229. /* CA */ { 0, &Ia_Invalid },
  230. /* CB */ { 0, &Ia_Invalid },
  231. /* CC */ { 0, &Ia_Invalid },
  232. /* CD */ { 0, &Ia_Invalid },
  233. /* CE */ { 0, &Ia_Invalid },
  234. /* CF */ { 0, &Ia_Invalid },
  235. /* D0 */ { 0, &Ia_Invalid },
  236. /* D1 */ { 0, &Ia_Invalid },
  237. /* D2 */ { 0, &Ia_Invalid },
  238. /* D3 */ { 0, &Ia_Invalid },
  239. /* D4 */ { 0, &Ia_Invalid },
  240. /* D5 */ { 0, &Ia_Invalid },
  241. /* D6 */ { 0, &Ia_Invalid },
  242. /* D7 */ { 0, &Ia_Invalid },
  243. /* D8 */ { 0, &Ia_Invalid },
  244. /* D9 */ { 0, &Ia_Invalid },
  245. /* DA */ { 0, &Ia_Invalid },
  246. /* DB */ { 0, &Ia_Invalid },
  247. /* DC */ { 0, &Ia_Invalid },
  248. /* DD */ { 0, &Ia_Invalid },
  249. /* DE */ { 0, &Ia_Invalid },
  250. /* DF */ { 0, &Ia_Invalid },
  251. /* E0 */ { 0, &Ia_Invalid },
  252. /* E1 */ { 0, &Ia_Invalid },
  253. /* E2 */ { 0, &Ia_Invalid },
  254. /* E3 */ { 0, &Ia_Invalid },
  255. /* E4 */ { 0, &Ia_Invalid },
  256. /* E5 */ { 0, &Ia_Invalid },
  257. /* E6 */ { 0, &Ia_Invalid },
  258. /* E7 */ { 0, &Ia_Invalid },
  259. /* E8 */ { 0, &Ia_Invalid },
  260. /* E9 */ { 0, &Ia_Invalid },
  261. /* EA */ { 0, &Ia_Invalid },
  262. /* EB */ { 0, &Ia_Invalid },
  263. /* EC */ { 0, &Ia_Invalid },
  264. /* ED */ { 0, &Ia_Invalid },
  265. /* EE */ { 0, &Ia_Invalid },
  266. /* EF */ { 0, &Ia_Invalid },
  267. /* F0 */ { 0, &Ia_Invalid },
  268. /* F1 */ { 0, &Ia_Invalid },
  269. /* F2 */ { 0, &Ia_Invalid },
  270. /* F3 */ { 0, &Ia_Invalid },
  271. /* F4 */ { 0, &Ia_Invalid },
  272. /* F5 */ { 0, &Ia_Invalid },
  273. /* F6 */ { 0, &Ia_Invalid },
  274. /* F7 */ { 0, &Ia_Invalid },
  275. /* F8 */ { 0, &Ia_Invalid },
  276. /* F9 */ { 0, &Ia_Invalid },
  277. /* FA */ { 0, &Ia_Invalid },
  278. /* FB */ { 0, &Ia_Invalid },
  279. /* FC */ { 0, &Ia_Invalid },
  280. /* FD */ { 0, &Ia_Invalid },
  281. /* FE */ { 0, &Ia_Invalid },
  282. /* FF */ { 0, &Ia_Invalid }
  283. };
  284. /* ************************************************************************ */
  285. /* FPU Opcodes */
  286. // floating point instructions when mod!=11b.
  287. // the following tables will be accessed like groups using the nnn (reg) field of
  288. // the modrm byte. (the first byte is D8-DF)
  289. // D8 (modrm is outside 00h - BFh) (mod != 11)
  290. static BxDisasmOpcodeTable_t BxDisasmFPGroupD8[8] = {
  291. /* 0 */ { 0, &Ia_fadds_Md },
  292. /* 1 */ { 0, &Ia_fmuls_Md },
  293. /* 2 */ { 0, &Ia_fcoms_Md },
  294. /* 3 */ { 0, &Ia_fcomps_Md },
  295. /* 4 */ { 0, &Ia_fsubs_Md },
  296. /* 5 */ { 0, &Ia_fsubrs_Md },
  297. /* 6 */ { 0, &Ia_fdivs_Md },
  298. /* 7 */ { 0, &Ia_fdivrs_Md }
  299. };
  300. // D9 (modrm is outside 00h - BFh) (mod != 11)
  301. static BxDisasmOpcodeTable_t BxDisasmFPGroupD9[8] = {
  302. /* 0 */ { 0, &Ia_flds_Md },
  303. /* 1 */ { 0, &Ia_Invalid },
  304. /* 2 */ { 0, &Ia_fsts_Md },
  305. /* 3 */ { 0, &Ia_fstps_Md },
  306. /* 4 */ { 0, &Ia_fldenv },
  307. /* 5 */ { 0, &Ia_fldcw },
  308. /* 6 */ { 0, &Ia_fnstenv },
  309. /* 7 */ { 0, &Ia_fnstcw }
  310. };
  311. // DA (modrm is outside 00h - BFh) (mod != 11)
  312. static BxDisasmOpcodeTable_t BxDisasmFPGroupDA[8] = {
  313. /* 0 */ { 0, &Ia_fiaddl_Md },
  314. /* 1 */ { 0, &Ia_fimull_Md },
  315. /* 2 */ { 0, &Ia_ficoml_Md },
  316. /* 3 */ { 0, &Ia_ficompl_Md },
  317. /* 4 */ { 0, &Ia_fisubl_Md },
  318. /* 5 */ { 0, &Ia_fisubrl_Md },
  319. /* 6 */ { 0, &Ia_fidivl_Md },
  320. /* 7 */ { 0, &Ia_fidivrl_Md }
  321. };
  322. // DB (modrm is outside 00h - BFh) (mod != 11)
  323. static BxDisasmOpcodeTable_t BxDisasmFPGroupDB[8] = {
  324. /* 0 */ { 0, &Ia_fildl_Md },
  325. /* 1 */ { 0, &Ia_fisttpl_Md },
  326. /* 2 */ { 0, &Ia_fistl_Md },
  327. /* 3 */ { 0, &Ia_fistpl_Md },
  328. /* 4 */ { 0, &Ia_Invalid },
  329. /* 5 */ { 0, &Ia_fldt_Mt },
  330. /* 6 */ { 0, &Ia_Invalid },
  331. /* 7 */ { 0, &Ia_fstpt_Mt }
  332. };
  333. // DC (modrm is outside 00h - BFh) (mod != 11)
  334. static BxDisasmOpcodeTable_t BxDisasmFPGroupDC[8] = {
  335. /* 0 */ { 0, &Ia_faddl_Mq },
  336. /* 1 */ { 0, &Ia_fmull_Mq },
  337. /* 2 */ { 0, &Ia_fcoml_Mq },
  338. /* 3 */ { 0, &Ia_fcompl_Mq },
  339. /* 4 */ { 0, &Ia_fsubl_Mq },
  340. /* 5 */ { 0, &Ia_fsubrl_Mq },
  341. /* 6 */ { 0, &Ia_fdivl_Mq },
  342. /* 7 */ { 0, &Ia_fdivrl_Mq }
  343. };
  344. // DD (modrm is outside 00h - BFh) (mod != 11)
  345. static BxDisasmOpcodeTable_t BxDisasmFPGroupDD[8] = {
  346. /* 0 */ { 0, &Ia_fldl_Mq },
  347. /* 1 */ { 0, &Ia_fisttpq_Mq },
  348. /* 2 */ { 0, &Ia_fstl_Mq },
  349. /* 3 */ { 0, &Ia_fstpl_Mq },
  350. /* 4 */ { 0, &Ia_frstor },
  351. /* 5 */ { 0, &Ia_Invalid },
  352. /* 6 */ { 0, &Ia_fnsave },
  353. /* 7 */ { 0, &Ia_fnstsw }
  354. };
  355. // DE (modrm is outside 00h - BFh) (mod != 11)
  356. static BxDisasmOpcodeTable_t BxDisasmFPGroupDE[8] = {
  357. /* 0 */ { 0, &Ia_fiadds_Mw },
  358. /* 1 */ { 0, &Ia_fimuls_Mw },
  359. /* 2 */ { 0, &Ia_ficoms_Mw },
  360. /* 3 */ { 0, &Ia_ficomps_Mw },
  361. /* 4 */ { 0, &Ia_fisubs_Mw },
  362. /* 5 */ { 0, &Ia_fisubrs_Mw },
  363. /* 6 */ { 0, &Ia_fidivs_Mw },
  364. /* 7 */ { 0, &Ia_fidivrs_Mw }
  365. };
  366. // DF (modrm is outside 00h - BFh) (mod != 11)
  367. static BxDisasmOpcodeTable_t BxDisasmFPGroupDF[8] = {
  368. /* 0 */ { 0, &Ia_filds_Mw },
  369. /* 1 */ { 0, &Ia_fisttps_Mw },
  370. /* 2 */ { 0, &Ia_fists_Mw },
  371. /* 3 */ { 0, &Ia_fistps_Mw },
  372. /* 4 */ { 0, &Ia_fbldt_Mt },
  373. /* 5 */ { 0, &Ia_fildq_Mq },
  374. /* 6 */ { 0, &Ia_fbstpt_Mt },
  375. /* 7 */ { 0, &Ia_fistpq_Mq }
  376. };
  377. // 512 entries for second byte of floating point instructions. (when mod==11b)
  378. static BxDisasmOpcodeTable_t BxDisasmOpcodeInfoFP[512] = {
  379. // D8 (modrm is outside 00h - BFh) (mod == 11)
  380. /* D8 C0 */ { 0, &Ia_fadd_ST0_STi },
  381. /* D8 C1 */ { 0, &Ia_fadd_ST0_STi },
  382. /* D8 C2 */ { 0, &Ia_fadd_ST0_STi },
  383. /* D8 C3 */ { 0, &Ia_fadd_ST0_STi },
  384. /* D8 C4 */ { 0, &Ia_fadd_ST0_STi },
  385. /* D8 C5 */ { 0, &Ia_fadd_ST0_STi },
  386. /* D8 C6 */ { 0, &Ia_fadd_ST0_STi },
  387. /* D8 C7 */ { 0, &Ia_fadd_ST0_STi },
  388. /* D8 C8 */ { 0, &Ia_fmul_ST0_STi },
  389. /* D8 C9 */ { 0, &Ia_fmul_ST0_STi },
  390. /* D8 CA */ { 0, &Ia_fmul_ST0_STi },
  391. /* D8 CB */ { 0, &Ia_fmul_ST0_STi },
  392. /* D8 CC */ { 0, &Ia_fmul_ST0_STi },
  393. /* D8 CD */ { 0, &Ia_fmul_ST0_STi },
  394. /* D8 CE */ { 0, &Ia_fmul_ST0_STi },
  395. /* D8 CF */ { 0, &Ia_fmul_ST0_STi },
  396. /* D8 D0 */ { 0, &Ia_fcom_STi },
  397. /* D8 D1 */ { 0, &Ia_fcom_STi },
  398. /* D8 D2 */ { 0, &Ia_fcom_STi },
  399. /* D8 D3 */ { 0, &Ia_fcom_STi },
  400. /* D8 D4 */ { 0, &Ia_fcom_STi },
  401. /* D8 D5 */ { 0, &Ia_fcom_STi },
  402. /* D8 D6 */ { 0, &Ia_fcom_STi },
  403. /* D8 D7 */ { 0, &Ia_fcom_STi },
  404. /* D8 D8 */ { 0, &Ia_fcomp_STi },
  405. /* D8 D9 */ { 0, &Ia_fcomp_STi },
  406. /* D8 DA */ { 0, &Ia_fcomp_STi },
  407. /* D8 DB */ { 0, &Ia_fcomp_STi },
  408. /* D8 DC */ { 0, &Ia_fcomp_STi },
  409. /* D8 DD */ { 0, &Ia_fcomp_STi },
  410. /* D8 DE */ { 0, &Ia_fcomp_STi },
  411. /* D8 DF */ { 0, &Ia_fcomp_STi },
  412. /* D8 E0 */ { 0, &Ia_fsub_ST0_STi },
  413. /* D8 E1 */ { 0, &Ia_fsub_ST0_STi },
  414. /* D8 E2 */ { 0, &Ia_fsub_ST0_STi },
  415. /* D8 E3 */ { 0, &Ia_fsub_ST0_STi },
  416. /* D8 E4 */ { 0, &Ia_fsub_ST0_STi },
  417. /* D8 E5 */ { 0, &Ia_fsub_ST0_STi },
  418. /* D8 E6 */ { 0, &Ia_fsub_ST0_STi },
  419. /* D8 E7 */ { 0, &Ia_fsub_ST0_STi },
  420. /* D8 E8 */ { 0, &Ia_fsubr_ST0_STi },
  421. /* D8 E9 */ { 0, &Ia_fsubr_ST0_STi },
  422. /* D8 EA */ { 0, &Ia_fsubr_ST0_STi },
  423. /* D8 EB */ { 0, &Ia_fsubr_ST0_STi },
  424. /* D8 EC */ { 0, &Ia_fsubr_ST0_STi },
  425. /* D8 ED */ { 0, &Ia_fsubr_ST0_STi },
  426. /* D8 EE */ { 0, &Ia_fsubr_ST0_STi },
  427. /* D8 EF */ { 0, &Ia_fsubr_ST0_STi },
  428. /* D8 F0 */ { 0, &Ia_fdiv_ST0_STi },
  429. /* D8 F1 */ { 0, &Ia_fdiv_ST0_STi },
  430. /* D8 F2 */ { 0, &Ia_fdiv_ST0_STi },
  431. /* D8 F3 */ { 0, &Ia_fdiv_ST0_STi },
  432. /* D8 F4 */ { 0, &Ia_fdiv_ST0_STi },
  433. /* D8 F5 */ { 0, &Ia_fdiv_ST0_STi },
  434. /* D8 F6 */ { 0, &Ia_fdiv_ST0_STi },
  435. /* D8 F7 */ { 0, &Ia_fdiv_ST0_STi },
  436. /* D8 F8 */ { 0, &Ia_fdivr_ST0_STi },
  437. /* D8 F9 */ { 0, &Ia_fdivr_ST0_STi },
  438. /* D8 FA */ { 0, &Ia_fdivr_ST0_STi },
  439. /* D8 FB */ { 0, &Ia_fdivr_ST0_STi },
  440. /* D8 FC */ { 0, &Ia_fdivr_ST0_STi },
  441. /* D8 FD */ { 0, &Ia_fdivr_ST0_STi },
  442. /* D8 FE */ { 0, &Ia_fdivr_ST0_STi },
  443. /* D8 FF */ { 0, &Ia_fdivr_ST0_STi },
  444. // D9 (modrm is outside 00h - BFh) (mod == 11)
  445. /* D9 C0 */ { 0, &Ia_fld_STi },
  446. /* D9 C1 */ { 0, &Ia_fld_STi },
  447. /* D9 C2 */ { 0, &Ia_fld_STi },
  448. /* D9 C3 */ { 0, &Ia_fld_STi },
  449. /* D9 C4 */ { 0, &Ia_fld_STi },
  450. /* D9 C5 */ { 0, &Ia_fld_STi },
  451. /* D9 C6 */ { 0, &Ia_fld_STi },
  452. /* D9 C7 */ { 0, &Ia_fld_STi },
  453. /* D9 C8 */ { 0, &Ia_fxch },
  454. /* D9 C9 */ { 0, &Ia_fxch },
  455. /* D9 CA */ { 0, &Ia_fxch },
  456. /* D9 CB */ { 0, &Ia_fxch },
  457. /* D9 CC */ { 0, &Ia_fxch },
  458. /* D9 CD */ { 0, &Ia_fxch },
  459. /* D9 CE */ { 0, &Ia_fxch },
  460. /* D9 CF */ { 0, &Ia_fxch },
  461. /* D9 D0 */ { 0, &Ia_fnop },
  462. /* D9 D1 */ { 0, &Ia_Invalid },
  463. /* D9 D2 */ { 0, &Ia_Invalid },
  464. /* D9 D3 */ { 0, &Ia_Invalid },
  465. /* D9 D4 */ { 0, &Ia_Invalid },
  466. /* D9 D5 */ { 0, &Ia_Invalid },
  467. /* D9 D6 */ { 0, &Ia_Invalid },
  468. /* D9 D7 */ { 0, &Ia_Invalid },
  469. /* D9 D8 */ { 0, &Ia_fstp_STi }, // undocumented
  470. /* D9 D9 */ { 0, &Ia_fstp_STi }, // undocumented
  471. /* D9 DA */ { 0, &Ia_fstp_STi }, // undocumented
  472. /* D9 DB */ { 0, &Ia_fstp_STi }, // undocumented
  473. /* D9 DC */ { 0, &Ia_fstp_STi }, // undocumented
  474. /* D9 DD */ { 0, &Ia_fstp_STi }, // undocumented
  475. /* D9 DE */ { 0, &Ia_fstp_STi }, // undocumented
  476. /* D9 DF */ { 0, &Ia_fstp_STi }, // undocumented
  477. /* D9 E0 */ { 0, &Ia_fchs },
  478. /* D9 E1 */ { 0, &Ia_fabs },
  479. /* D9 E2 */ { 0, &Ia_Invalid },
  480. /* D9 E3 */ { 0, &Ia_Invalid },
  481. /* D9 E4 */ { 0, &Ia_ftst },
  482. /* D9 E5 */ { 0, &Ia_fxam },
  483. /* D9 E6 */ { 0, &Ia_Invalid },
  484. /* D9 E7 */ { 0, &Ia_Invalid },
  485. /* D9 E8 */ { 0, &Ia_fld1 },
  486. /* D9 E9 */ { 0, &Ia_fldl2t },
  487. /* D9 EA */ { 0, &Ia_fldl2e },
  488. /* D9 EB */ { 0, &Ia_fldpi },
  489. /* D9 EC */ { 0, &Ia_fldlg2 },
  490. /* D9 ED */ { 0, &Ia_fldln2 },
  491. /* D9 EE */ { 0, &Ia_fldz },
  492. /* D9 EF */ { 0, &Ia_Invalid },
  493. /* D9 F0 */ { 0, &Ia_f2xm1 },
  494. /* D9 F1 */ { 0, &Ia_fyl2x },
  495. /* D9 F2 */ { 0, &Ia_fptan },
  496. /* D9 F3 */ { 0, &Ia_fpatan },
  497. /* D9 F4 */ { 0, &Ia_fxtract },
  498. /* D9 F5 */ { 0, &Ia_fprem1 },
  499. /* D9 F6 */ { 0, &Ia_fdecstp },
  500. /* D9 F7 */ { 0, &Ia_fincstp },
  501. /* D9 F8 */ { 0, &Ia_fprem },
  502. /* D9 F9 */ { 0, &Ia_fyl2xp1 },
  503. /* D9 FA */ { 0, &Ia_fsqrt },
  504. /* D9 FB */ { 0, &Ia_fsincos },
  505. /* D9 FC */ { 0, &Ia_frndint },
  506. /* D9 FD */ { 0, &Ia_fscale },
  507. /* D9 FE */ { 0, &Ia_fsin },
  508. /* D9 FF */ { 0, &Ia_fcos },
  509. // DA (modrm is outside 00h - BFh) (mod == 11)
  510. /* DA C0 */ { 0, &Ia_fcmovb_ST0_STi },
  511. /* DA C1 */ { 0, &Ia_fcmovb_ST0_STi },
  512. /* DA C2 */ { 0, &Ia_fcmovb_ST0_STi },
  513. /* DA C3 */ { 0, &Ia_fcmovb_ST0_STi },
  514. /* DA C4 */ { 0, &Ia_fcmovb_ST0_STi },
  515. /* DA C5 */ { 0, &Ia_fcmovb_ST0_STi },
  516. /* DA C6 */ { 0, &Ia_fcmovb_ST0_STi },
  517. /* DA C7 */ { 0, &Ia_fcmovb_ST0_STi },
  518. /* DA C8 */ { 0, &Ia_fcmove_ST0_STi },
  519. /* DA C9 */ { 0, &Ia_fcmove_ST0_STi },
  520. /* DA CA */ { 0, &Ia_fcmove_ST0_STi },
  521. /* DA CB */ { 0, &Ia_fcmove_ST0_STi },
  522. /* DA CC */ { 0, &Ia_fcmove_ST0_STi },
  523. /* DA CD */ { 0, &Ia_fcmove_ST0_STi },
  524. /* DA CE */ { 0, &Ia_fcmove_ST0_STi },
  525. /* DA CF */ { 0, &Ia_fcmove_ST0_STi },
  526. /* DA D0 */ { 0, &Ia_fcmovbe_ST0_STi },
  527. /* DA D1 */ { 0, &Ia_fcmovbe_ST0_STi },
  528. /* DA D2 */ { 0, &Ia_fcmovbe_ST0_STi },
  529. /* DA D3 */ { 0, &Ia_fcmovbe_ST0_STi },
  530. /* DA D4 */ { 0, &Ia_fcmovbe_ST0_STi },
  531. /* DA D5 */ { 0, &Ia_fcmovbe_ST0_STi },
  532. /* DA D6 */ { 0, &Ia_fcmovbe_ST0_STi },
  533. /* DA D7 */ { 0, &Ia_fcmovbe_ST0_STi },
  534. /* DA D8 */ { 0, &Ia_fcmovu_ST0_STi },
  535. /* DA D9 */ { 0, &Ia_fcmovu_ST0_STi },
  536. /* DA DA */ { 0, &Ia_fcmovu_ST0_STi },
  537. /* DA DB */ { 0, &Ia_fcmovu_ST0_STi },
  538. /* DA DC */ { 0, &Ia_fcmovu_ST0_STi },
  539. /* DA DD */ { 0, &Ia_fcmovu_ST0_STi },
  540. /* DA DE */ { 0, &Ia_fcmovu_ST0_STi },
  541. /* DA DF */ { 0, &Ia_fcmovu_ST0_STi },
  542. /* DA E0 */ { 0, &Ia_Invalid },
  543. /* DA E1 */ { 0, &Ia_Invalid },
  544. /* DA E2 */ { 0, &Ia_Invalid },
  545. /* DA E3 */ { 0, &Ia_Invalid },
  546. /* DA E4 */ { 0, &Ia_Invalid },
  547. /* DA E5 */ { 0, &Ia_Invalid },
  548. /* DA E6 */ { 0, &Ia_Invalid },
  549. /* DA E7 */ { 0, &Ia_Invalid },
  550. /* DA E8 */ { 0, &Ia_Invalid },
  551. /* DA E9 */ { 0, &Ia_fucompp },
  552. /* DA EA */ { 0, &Ia_Invalid },
  553. /* DA EB */ { 0, &Ia_Invalid },
  554. /* DA EC */ { 0, &Ia_Invalid },
  555. /* DA ED */ { 0, &Ia_Invalid },
  556. /* DA EE */ { 0, &Ia_Invalid },
  557. /* DA EF */ { 0, &Ia_Invalid },
  558. /* DA F0 */ { 0, &Ia_Invalid },
  559. /* DA F1 */ { 0, &Ia_Invalid },
  560. /* DA F2 */ { 0, &Ia_Invalid },
  561. /* DA F3 */ { 0, &Ia_Invalid },
  562. /* DA F4 */ { 0, &Ia_Invalid },
  563. /* DA F5 */ { 0, &Ia_Invalid },
  564. /* DA F6 */ { 0, &Ia_Invalid },
  565. /* DA F7 */ { 0, &Ia_Invalid },
  566. /* DA F8 */ { 0, &Ia_Invalid },
  567. /* DA F9 */ { 0, &Ia_Invalid },
  568. /* DA FA */ { 0, &Ia_Invalid },
  569. /* DA FB */ { 0, &Ia_Invalid },
  570. /* DA FC */ { 0, &Ia_Invalid },
  571. /* DA FD */ { 0, &Ia_Invalid },
  572. /* DA FE */ { 0, &Ia_Invalid },
  573. /* DA FF */ { 0, &Ia_Invalid },
  574. // DB (modrm is outside 00h - BFh) (mod == 11)
  575. /* DB C0 */ { 0, &Ia_fcmovnb_ST0_STi },
  576. /* DB C1 */ { 0, &Ia_fcmovnb_ST0_STi },
  577. /* DB C2 */ { 0, &Ia_fcmovnb_ST0_STi },
  578. /* DB C3 */ { 0, &Ia_fcmovnb_ST0_STi },
  579. /* DB C4 */ { 0, &Ia_fcmovnb_ST0_STi },
  580. /* DB C5 */ { 0, &Ia_fcmovnb_ST0_STi },
  581. /* DB C6 */ { 0, &Ia_fcmovnb_ST0_STi },
  582. /* DB C7 */ { 0, &Ia_fcmovnb_ST0_STi },
  583. /* DB C8 */ { 0, &Ia_fcmovne_ST0_STi },
  584. /* DB C9 */ { 0, &Ia_fcmovne_ST0_STi },
  585. /* DB CA */ { 0, &Ia_fcmovne_ST0_STi },
  586. /* DB CB */ { 0, &Ia_fcmovne_ST0_STi },
  587. /* DB CC */ { 0, &Ia_fcmovne_ST0_STi },
  588. /* DB CD */ { 0, &Ia_fcmovne_ST0_STi },
  589. /* DB CE */ { 0, &Ia_fcmovne_ST0_STi },
  590. /* DB CF */ { 0, &Ia_fcmovne_ST0_STi },
  591. /* DB D0 */ { 0, &Ia_fcmovnbe_ST0_STi },
  592. /* DB D1 */ { 0, &Ia_fcmovnbe_ST0_STi },
  593. /* DB D2 */ { 0, &Ia_fcmovnbe_ST0_STi },
  594. /* DB D3 */ { 0, &Ia_fcmovnbe_ST0_STi },
  595. /* DB D4 */ { 0, &Ia_fcmovnbe_ST0_STi },
  596. /* DB D5 */ { 0, &Ia_fcmovnbe_ST0_STi },
  597. /* DB D6 */ { 0, &Ia_fcmovnbe_ST0_STi },
  598. /* DB D7 */ { 0, &Ia_fcmovnbe_ST0_STi },
  599. /* DB D8 */ { 0, &Ia_fcmovnu_ST0_STi },
  600. /* DB D9 */ { 0, &Ia_fcmovnu_ST0_STi },
  601. /* DB DA */ { 0, &Ia_fcmovnu_ST0_STi },
  602. /* DB DB */ { 0, &Ia_fcmovnu_ST0_STi },
  603. /* DB DC */ { 0, &Ia_fcmovnu_ST0_STi },
  604. /* DB DD */ { 0, &Ia_fcmovnu_ST0_STi },
  605. /* DB DE */ { 0, &Ia_fcmovnu_ST0_STi },
  606. /* DB DF */ { 0, &Ia_fcmovnu_ST0_STi },
  607. /* DB E0 */ { 0, &Ia_feni },
  608. /* DB E1 */ { 0, &Ia_fdisi },
  609. /* DB E2 */ { 0, &Ia_fnclex },
  610. /* DB E3 */ { 0, &Ia_fninit },
  611. /* DB E4 */ { 0, &Ia_fsetpm },
  612. /* DB E5 */ { 0, &Ia_Invalid },
  613. /* DB E6 */ { 0, &Ia_Invalid },
  614. /* DB E7 */ { 0, &Ia_Invalid },
  615. /* DB E8 */ { 0, &Ia_fucomi_ST0_STi },
  616. /* DB E9 */ { 0, &Ia_fucomi_ST0_STi },
  617. /* DB EA */ { 0, &Ia_fucomi_ST0_STi },
  618. /* DB EB */ { 0, &Ia_fucomi_ST0_STi },
  619. /* DB EC */ { 0, &Ia_fucomi_ST0_STi },
  620. /* DB ED */ { 0, &Ia_fucomi_ST0_STi },
  621. /* DB EE */ { 0, &Ia_fucomi_ST0_STi },
  622. /* DB EF */ { 0, &Ia_fucomi_ST0_STi },
  623. /* DB F0 */ { 0, &Ia_fcomi_ST0_STi },
  624. /* DB F1 */ { 0, &Ia_fcomi_ST0_STi },
  625. /* DB F2 */ { 0, &Ia_fcomi_ST0_STi },
  626. /* DB F3 */ { 0, &Ia_fcomi_ST0_STi },
  627. /* DB F4 */ { 0, &Ia_fcomi_ST0_STi },
  628. /* DB F5 */ { 0, &Ia_fcomi_ST0_STi },
  629. /* DB F6 */ { 0, &Ia_fcomi_ST0_STi },
  630. /* DB F7 */ { 0, &Ia_fcomi_ST0_STi },
  631. /* DB F8 */ { 0, &Ia_Invalid },
  632. /* DB F9 */ { 0, &Ia_Invalid },
  633. /* DB FA */ { 0, &Ia_Invalid },
  634. /* DB FB */ { 0, &Ia_Invalid },
  635. /* DB FC */ { 0, &Ia_Invalid },
  636. /* DB FD */ { 0, &Ia_Invalid },
  637. /* DB FE */ { 0, &Ia_Invalid },
  638. /* DB FF */ { 0, &Ia_Invalid },
  639. // DC (modrm is outside 00h - BFh) (mod == 11)
  640. /* DC C0 */ { 0, &Ia_fadd_STi_ST0 },
  641. /* DC C1 */ { 0, &Ia_fadd_STi_ST0 },
  642. /* DC C2 */ { 0, &Ia_fadd_STi_ST0 },
  643. /* DC C3 */ { 0, &Ia_fadd_STi_ST0 },
  644. /* DC C4 */ { 0, &Ia_fadd_STi_ST0 },
  645. /* DC C5 */ { 0, &Ia_fadd_STi_ST0 },
  646. /* DC C6 */ { 0, &Ia_fadd_STi_ST0 },
  647. /* DC C7 */ { 0, &Ia_fadd_STi_ST0 },
  648. /* DC C8 */ { 0, &Ia_fmul_STi_ST0 },
  649. /* DC C9 */ { 0, &Ia_fmul_STi_ST0 },
  650. /* DC CA */ { 0, &Ia_fmul_STi_ST0 },
  651. /* DC CB */ { 0, &Ia_fmul_STi_ST0 },
  652. /* DC CC */ { 0, &Ia_fmul_STi_ST0 },
  653. /* DC CD */ { 0, &Ia_fmul_STi_ST0 },
  654. /* DC CE */ { 0, &Ia_fmul_STi_ST0 },
  655. /* DC CF */ { 0, &Ia_fmul_STi_ST0 },
  656. /* DC D0 */ { 0, &Ia_fcom_STi }, // undocumented
  657. /* DC D1 */ { 0, &Ia_fcom_STi }, // undocumented
  658. /* DC D2 */ { 0, &Ia_fcom_STi }, // undocumented
  659. /* DC D3 */ { 0, &Ia_fcom_STi }, // undocumented
  660. /* DC D4 */ { 0, &Ia_fcom_STi }, // undocumented
  661. /* DC D5 */ { 0, &Ia_fcom_STi }, // undocumented
  662. /* DC D6 */ { 0, &Ia_fcom_STi }, // undocumented
  663. /* DC D7 */ { 0, &Ia_fcom_STi }, // undocumented
  664. /* DC D8 */ { 0, &Ia_fcomp_STi }, // undocumented
  665. /* DC D9 */ { 0, &Ia_fcomp_STi }, // undocumented
  666. /* DC DA */ { 0, &Ia_fcomp_STi }, // undocumented
  667. /* DC DB */ { 0, &Ia_fcomp_STi }, // undocumented
  668. /* DC DC */ { 0, &Ia_fcomp_STi }, // undocumented
  669. /* DC DD */ { 0, &Ia_fcomp_STi }, // undocumented
  670. /* DC DE */ { 0, &Ia_fcomp_STi }, // undocumented
  671. /* DC DF */ { 0, &Ia_fcomp_STi }, // undocumented
  672. /* DC E0 */ { 0, &Ia_fsubr_STi_ST0 },
  673. /* DC E1 */ { 0, &Ia_fsubr_STi_ST0 },
  674. /* DC E2 */ { 0, &Ia_fsubr_STi_ST0 },
  675. /* DC E3 */ { 0, &Ia_fsubr_STi_ST0 },
  676. /* DC E4 */ { 0, &Ia_fsubr_STi_ST0 },
  677. /* DC E5 */ { 0, &Ia_fsubr_STi_ST0 },
  678. /* DC E6 */ { 0, &Ia_fsubr_STi_ST0 },
  679. /* DC E7 */ { 0, &Ia_fsubr_STi_ST0 },
  680. /* DC E8 */ { 0, &Ia_fsub_STi_ST0 },
  681. /* DC E9 */ { 0, &Ia_fsub_STi_ST0 },
  682. /* DC EA */ { 0, &Ia_fsub_STi_ST0 },
  683. /* DC EB */ { 0, &Ia_fsub_STi_ST0 },
  684. /* DC EC */ { 0, &Ia_fsub_STi_ST0 },
  685. /* DC ED */ { 0, &Ia_fsub_STi_ST0 },
  686. /* DC EE */ { 0, &Ia_fsub_STi_ST0 },
  687. /* DC EF */ { 0, &Ia_fsub_STi_ST0 },
  688. /* DC F0 */ { 0, &Ia_fdivr_STi_ST0 },
  689. /* DC F1 */ { 0, &Ia_fdivr_STi_ST0 },
  690. /* DC F2 */ { 0, &Ia_fdivr_STi_ST0 },
  691. /* DC F3 */ { 0, &Ia_fdivr_STi_ST0 },
  692. /* DC F4 */ { 0, &Ia_fdivr_STi_ST0 },
  693. /* DC F5 */ { 0, &Ia_fdivr_STi_ST0 },
  694. /* DC F6 */ { 0, &Ia_fdivr_STi_ST0 },
  695. /* DC F7 */ { 0, &Ia_fdivr_STi_ST0 },
  696. /* DC F8 */ { 0, &Ia_fdiv_STi_ST0 },
  697. /* DC F9 */ { 0, &Ia_fdiv_STi_ST0 },
  698. /* DC FA */ { 0, &Ia_fdiv_STi_ST0 },
  699. /* DC FB */ { 0, &Ia_fdiv_STi_ST0 },
  700. /* DC FC */ { 0, &Ia_fdiv_STi_ST0 },
  701. /* DC FD */ { 0, &Ia_fdiv_STi_ST0 },
  702. /* DC FE */ { 0, &Ia_fdiv_STi_ST0 },
  703. /* DC FF */ { 0, &Ia_fdiv_STi_ST0 },
  704. // DD (modrm is outside 00h - BFh) (mod == 11)
  705. /* DD C0 */ { 0, &Ia_ffree_STi },
  706. /* DD C1 */ { 0, &Ia_ffree_STi },
  707. /* DD C2 */ { 0, &Ia_ffree_STi },
  708. /* DD C3 */ { 0, &Ia_ffree_STi },
  709. /* DD C4 */ { 0, &Ia_ffree_STi },
  710. /* DD C5 */ { 0, &Ia_ffree_STi },
  711. /* DD C6 */ { 0, &Ia_ffree_STi },
  712. /* DD C7 */ { 0, &Ia_ffree_STi },
  713. /* DD C8 */ { 0, &Ia_fxch }, // undocumented
  714. /* DD C9 */ { 0, &Ia_fxch }, // undocumented
  715. /* DD CA */ { 0, &Ia_fxch }, // undocumented
  716. /* DD CB */ { 0, &Ia_fxch }, // undocumented
  717. /* DD CC */ { 0, &Ia_fxch }, // undocumented
  718. /* DD CD */ { 0, &Ia_fxch }, // undocumented
  719. /* DD CE */ { 0, &Ia_fxch }, // undocumented
  720. /* DD CF */ { 0, &Ia_fxch }, // undocumented
  721. /* DD D0 */ { 0, &Ia_fst_STi },
  722. /* DD D1 */ { 0, &Ia_fst_STi },
  723. /* DD D2 */ { 0, &Ia_fst_STi },
  724. /* DD D3 */ { 0, &Ia_fst_STi },
  725. /* DD D4 */ { 0, &Ia_fst_STi },
  726. /* DD D5 */ { 0, &Ia_fst_STi },
  727. /* DD D6 */ { 0, &Ia_fst_STi },
  728. /* DD D7 */ { 0, &Ia_fst_STi },
  729. /* DD D8 */ { 0, &Ia_fstp_STi },
  730. /* DD D9 */ { 0, &Ia_fstp_STi },
  731. /* DD DA */ { 0, &Ia_fstp_STi },
  732. /* DD DB */ { 0, &Ia_fstp_STi },
  733. /* DD DC */ { 0, &Ia_fstp_STi },
  734. /* DD DD */ { 0, &Ia_fstp_STi },
  735. /* DD DE */ { 0, &Ia_fstp_STi },
  736. /* DD DF */ { 0, &Ia_fstp_STi },
  737. /* DD E0 */ { 0, &Ia_fucom_STi },
  738. /* DD E1 */ { 0, &Ia_fucom_STi },
  739. /* DD E2 */ { 0, &Ia_fucom_STi },
  740. /* DD E3 */ { 0, &Ia_fucom_STi },
  741. /* DD E4 */ { 0, &Ia_fucom_STi },
  742. /* DD E5 */ { 0, &Ia_fucom_STi },
  743. /* DD E6 */ { 0, &Ia_fucom_STi },
  744. /* DD E7 */ { 0, &Ia_fucom_STi },
  745. /* DD E8 */ { 0, &Ia_fucomp_STi },
  746. /* DD E9 */ { 0, &Ia_fucomp_STi },
  747. /* DD EA */ { 0, &Ia_fucomp_STi },
  748. /* DD EB */ { 0, &Ia_fucomp_STi },
  749. /* DD EC */ { 0, &Ia_fucomp_STi },
  750. /* DD ED */ { 0, &Ia_fucomp_STi },
  751. /* DD EE */ { 0, &Ia_fucomp_STi },
  752. /* DD EF */ { 0, &Ia_fucomp_STi },
  753. /* DD F0 */ { 0, &Ia_Invalid },
  754. /* DD F1 */ { 0, &Ia_Invalid },
  755. /* DD F2 */ { 0, &Ia_Invalid },
  756. /* DD F3 */ { 0, &Ia_Invalid },
  757. /* DD F4 */ { 0, &Ia_Invalid },
  758. /* DD F5 */ { 0, &Ia_Invalid },
  759. /* DD F6 */ { 0, &Ia_Invalid },
  760. /* DD F7 */ { 0, &Ia_Invalid },
  761. /* DD F8 */ { 0, &Ia_Invalid },
  762. /* DD F9 */ { 0, &Ia_Invalid },
  763. /* DD FA */ { 0, &Ia_Invalid },
  764. /* DD FB */ { 0, &Ia_Invalid },
  765. /* DD FC */ { 0, &Ia_Invalid },
  766. /* DD FD */ { 0, &Ia_Invalid },
  767. /* DD FE */ { 0, &Ia_Invalid },
  768. /* DD FF */ { 0, &Ia_Invalid },
  769. // DE (modrm is outside 00h - BFh) (mod == 11)
  770. /* DE C0 */ { 0, &Ia_faddp_STi_ST0 },
  771. /* DE C1 */ { 0, &Ia_faddp_STi_ST0 },
  772. /* DE C2 */ { 0, &Ia_faddp_STi_ST0 },
  773. /* DE C3 */ { 0, &Ia_faddp_STi_ST0 },
  774. /* DE C4 */ { 0, &Ia_faddp_STi_ST0 },
  775. /* DE C5 */ { 0, &Ia_faddp_STi_ST0 },
  776. /* DE C6 */ { 0, &Ia_faddp_STi_ST0 },
  777. /* DE C7 */ { 0, &Ia_faddp_STi_ST0 },
  778. /* DE C8 */ { 0, &Ia_fmulp_STi_ST0 },
  779. /* DE C9 */ { 0, &Ia_fmulp_STi_ST0 },
  780. /* DE CA */ { 0, &Ia_fmulp_STi_ST0 },
  781. /* DE CB */ { 0, &Ia_fmulp_STi_ST0 },
  782. /* DE CC */ { 0, &Ia_fmulp_STi_ST0 },
  783. /* DE CD */ { 0, &Ia_fmulp_STi_ST0 },
  784. /* DE CE */ { 0, &Ia_fmulp_STi_ST0 },
  785. /* DE CF */ { 0, &Ia_fmulp_STi_ST0 },
  786. /* DE D0 */ { 0, &Ia_fcomp_STi }, // undocumented
  787. /* DE D1 */ { 0, &Ia_fcomp_STi }, // undocumented
  788. /* DE D2 */ { 0, &Ia_fcomp_STi }, // undocumented
  789. /* DE D3 */ { 0, &Ia_fcomp_STi }, // undocumented
  790. /* DE D4 */ { 0, &Ia_fcomp_STi }, // undocumented
  791. /* DE D5 */ { 0, &Ia_fcomp_STi }, // undocumented
  792. /* DE D6 */ { 0, &Ia_fcomp_STi }, // undocumented
  793. /* DE D7 */ { 0, &Ia_fcomp_STi }, // undocumented
  794. /* DE D8 */ { 0, &Ia_Invalid },
  795. /* DE D9 */ { 0, &Ia_fcompp },
  796. /* DE DA */ { 0, &Ia_Invalid },
  797. /* DE DB */ { 0, &Ia_Invalid },
  798. /* DE DC */ { 0, &Ia_Invalid },
  799. /* DE DD */ { 0, &Ia_Invalid },
  800. /* DE DE */ { 0, &Ia_Invalid },
  801. /* DE DF */ { 0, &Ia_Invalid },
  802. /* DE E0 */ { 0, &Ia_fsubrp_STi_ST0 },
  803. /* DE E1 */ { 0, &Ia_fsubrp_STi_ST0 },
  804. /* DE E2 */ { 0, &Ia_fsubrp_STi_ST0 },
  805. /* DE E3 */ { 0, &Ia_fsubrp_STi_ST0 },
  806. /* DE E4 */ { 0, &Ia_fsubrp_STi_ST0 },
  807. /* DE E5 */ { 0, &Ia_fsubrp_STi_ST0 },
  808. /* DE E6 */ { 0, &Ia_fsubrp_STi_ST0 },
  809. /* DE E7 */ { 0, &Ia_fsubrp_STi_ST0 },
  810. /* DE E8 */ { 0, &Ia_fsubp_STi_ST0 },
  811. /* DE E9 */ { 0, &Ia_fsubp_STi_ST0 },
  812. /* DE EA */ { 0, &Ia_fsubp_STi_ST0 },
  813. /* DE EB */ { 0, &Ia_fsubp_STi_ST0 },
  814. /* DE EC */ { 0, &Ia_fsubp_STi_ST0 },
  815. /* DE ED */ { 0, &Ia_fsubp_STi_ST0 },
  816. /* DE EE */ { 0, &Ia_fsubp_STi_ST0 },
  817. /* DE EF */ { 0, &Ia_fsubp_STi_ST0 },
  818. /* DE F0 */ { 0, &Ia_fdivrp_STi_ST0 },
  819. /* DE F1 */ { 0, &Ia_fdivrp_STi_ST0 },
  820. /* DE F2 */ { 0, &Ia_fdivrp_STi_ST0 },
  821. /* DE F3 */ { 0, &Ia_fdivrp_STi_ST0 },
  822. /* DE F4 */ { 0, &Ia_fdivrp_STi_ST0 },
  823. /* DE F5 */ { 0, &Ia_fdivrp_STi_ST0 },
  824. /* DE F6 */ { 0, &Ia_fdivrp_STi_ST0 },
  825. /* DE F7 */ { 0, &Ia_fdivrp_STi_ST0 },
  826. /* DE F8 */ { 0, &Ia_fdivp_STi_ST0 },
  827. /* DE F9 */ { 0, &Ia_fdivp_STi_ST0 },
  828. /* DE FA */ { 0, &Ia_fdivp_STi_ST0 },
  829. /* DE FB */ { 0, &Ia_fdivp_STi_ST0 },
  830. /* DE FC */ { 0, &Ia_fdivp_STi_ST0 },
  831. /* DE FD */ { 0, &Ia_fdivp_STi_ST0 },
  832. /* DE FE */ { 0, &Ia_fdivp_STi_ST0 },
  833. /* DE FF */ { 0, &Ia_fdivp_STi_ST0 },
  834. // DF (modrm is outside 00h - BFh) (mod == 11)
  835. /* DF C0 */ { 0, &Ia_ffreep_STi }, // 287 compatibility opcode
  836. /* DF C1 */ { 0, &Ia_ffreep_STi },
  837. /* DF C2 */ { 0, &Ia_ffreep_STi },
  838. /* DF C3 */ { 0, &Ia_ffreep_STi },
  839. /* DF C4 */ { 0, &Ia_ffreep_STi },
  840. /* DF C5 */ { 0, &Ia_ffreep_STi },
  841. /* DF C6 */ { 0, &Ia_ffreep_STi },
  842. /* DF C7 */ { 0, &Ia_ffreep_STi },
  843. /* DF C8 */ { 0, &Ia_fxch }, // undocumented
  844. /* DF C9 */ { 0, &Ia_fxch }, // undocumented
  845. /* DF CA */ { 0, &Ia_fxch }, // undocumented
  846. /* DF CB */ { 0, &Ia_fxch }, // undocumented
  847. /* DF CC */ { 0, &Ia_fxch }, // undocumented
  848. /* DF CD */ { 0, &Ia_fxch }, // undocumented
  849. /* DF CE */ { 0, &Ia_fxch }, // undocumented
  850. /* DF CF */ { 0, &Ia_fxch }, // undocumented
  851. /* DF D0 */ { 0, &Ia_fstp_STi }, // undocumented
  852. /* DF D1 */ { 0, &Ia_fstp_STi }, // undocumented
  853. /* DF D2 */ { 0, &Ia_fstp_STi }, // undocumented
  854. /* DF D3 */ { 0, &Ia_fstp_STi }, // undocumented
  855. /* DF D4 */ { 0, &Ia_fstp_STi }, // undocumented
  856. /* DF D5 */ { 0, &Ia_fstp_STi }, // undocumented
  857. /* DF D6 */ { 0, &Ia_fstp_STi }, // undocumented
  858. /* DF D7 */ { 0, &Ia_fstp_STi }, // undocumented
  859. /* DF D8 */ { 0, &Ia_fstp_STi }, // undocumented
  860. /* DF D9 */ { 0, &Ia_fstp_STi }, // undocumented
  861. /* DF DA */ { 0, &Ia_fstp_STi }, // undocumented
  862. /* DF DB */ { 0, &Ia_fstp_STi }, // undocumented
  863. /* DF DC */ { 0, &Ia_fstp_STi }, // undocumented
  864. /* DF DD */ { 0, &Ia_fstp_STi }, // undocumented
  865. /* DF DE */ { 0, &Ia_fstp_STi }, // undocumented
  866. /* DF DF */ { 0, &Ia_fstp_STi }, // undocumented
  867. /* DF E0 */ { 0, &Ia_fnstsw_AX },
  868. /* DF E1 */ { 0, &Ia_Invalid },
  869. /* DF E2 */ { 0, &Ia_Invalid },
  870. /* DF E3 */ { 0, &Ia_Invalid },
  871. /* DF E4 */ { 0, &Ia_Invalid },
  872. /* DF E5 */ { 0, &Ia_Invalid },
  873. /* DF E6 */ { 0, &Ia_Invalid },
  874. /* DF E7 */ { 0, &Ia_Invalid },
  875. /* DF E8 */ { 0, &Ia_fucomip_ST0_STi },
  876. /* DF E9 */ { 0, &Ia_fucomip_ST0_STi },
  877. /* DF EA */ { 0, &Ia_fucomip_ST0_STi },
  878. /* DF EB */ { 0, &Ia_fucomip_ST0_STi },
  879. /* DF EC */ { 0, &Ia_fucomip_ST0_STi },
  880. /* DF ED */ { 0, &Ia_fucomip_ST0_STi },
  881. /* DF EE */ { 0, &Ia_fucomip_ST0_STi },
  882. /* DF EF */ { 0, &Ia_fucomip_ST0_STi },
  883. /* DF F0 */ { 0, &Ia_fcomip_ST0_STi },
  884. /* DF F1 */ { 0, &Ia_fcomip_ST0_STi },
  885. /* DF F2 */ { 0, &Ia_fcomip_ST0_STi },
  886. /* DF F3 */ { 0, &Ia_fcomip_ST0_STi },
  887. /* DF F4 */ { 0, &Ia_fcomip_ST0_STi },
  888. /* DF F5 */ { 0, &Ia_fcomip_ST0_STi },
  889. /* DF F6 */ { 0, &Ia_fcomip_ST0_STi },
  890. /* DF F7 */ { 0, &Ia_fcomip_ST0_STi },
  891. /* DF F8 */ { 0, &Ia_Invalid },
  892. /* DF F9 */ { 0, &Ia_Invalid },
  893. /* DF FA */ { 0, &Ia_Invalid },
  894. /* DF FB */ { 0, &Ia_Invalid },
  895. /* DF FC */ { 0, &Ia_Invalid },
  896. /* DF FD */ { 0, &Ia_Invalid },
  897. /* DF FE */ { 0, &Ia_Invalid },
  898. /* DF FF */ { 0, &Ia_Invalid },
  899. };