[HEADERS]
[reactos.git] / rosapps / applications / sysutils / utils / pice / module / disassemblerdata.h
1 /*++
2
3 Copyright (c) 2000-2001 Goran Devic
4 Modified (c) 2001 Klaus P. Gerlicher
5
6 Module Name:
7
8 disassembler.h
9
10 Abstract:
11
12 header for disassembler.c
13
14 Environment:
15
16 LINUX 2.2.X
17 Kernel mode only
18
19 Author:
20
21 Goran Devic
22
23 Revision History:
24
25 17-Mar-2000: Original (Goran Devic)
26 05-Jan-2001: Modified for pICE (Klaus P. Gerlicher)
27
28 Copyright notice:
29
30 This file may be distributed under the terms of the GNU Public License.
31
32 BUGS:
33 There is no segment override for _Ap (look the code)
34 --*/
35
36
37 /******************************************************************************
38 * *
39 * Include Files *
40 * *
41 ******************************************************************************/
42
43 #include "disassemblerdefines.h" // Include its own defines
44
45 /******************************************************************************
46 * *
47 * Define opcode names as ASCIIZ strings *
48 * *
49 ******************************************************************************/
50 char* sNames[] = {
51 "", /* 0X000 */
52 "AAA", /* 0X001 */
53 "AAD", /* 0X002 */
54 "AAM", /* 0X003 */
55 "AAS", /* 0X004 */
56 "ADC", /* 0X005 */
57 "ADD", /* 0X006 */
58 "AND", /* 0X007 */
59 "ARPL", /* 0X008 */
60 "BOUND", /* 0X009 */
61 "BSF", /* 0X00A */
62 "BSR", /* 0X00B */
63 "BT", /* 0X00C */
64 "BTC", /* 0X00D */
65 "BTR", /* 0X00E */
66 "BTS", /* 0X00F */
67 "CALL", /* 0X010 */
68 "CBW", /* 0X011 */
69 "CWDE", /* 0X012 */
70 "CLC", /* 0X013 */
71 "CLD", /* 0X014 */
72 "CLI", /* 0X015 */
73 "CLTS", /* 0X016 */
74 "CMC", /* 0X017 */
75 "CMP", /* 0X018 */
76 "CMPS", /* 0X019 */
77 "CMPSB", /* 0X01A */
78 "CMPSW", /* 0X01B */
79 "CMPSD", /* 0X01C */
80 "CWD", /* 0X01D */
81 "CDQ", /* 0X01E */
82 "DAA", /* 0X01F */
83 "DAS", /* 0X020 */
84 "DEC", /* 0X021 */
85 "DIV", /* 0X022 */
86 "ENTER", /* 0X023 */
87 "HLT", /* 0X024 */
88 "IDIV", /* 0X025 */
89 "IMUL", /* 0X026 */
90 "IN", /* 0X027 */
91 "INC", /* 0X028 */
92 "INS", /* 0X029 */
93 "INSB", /* 0X02A */
94 "INSW", /* 0X02B */
95 "INSD", /* 0X02C */
96 "INT", /* 0X02D */
97 "INTO", /* 0X02E */
98 "IRET", /* 0X02F */
99 "IRETD", /* 0X030 */
100 "JO", /* 0X031 */
101 "JNO", /* 0X032 */
102 "JB", /* 0X033 */
103 "JNB", /* 0X034 */
104 "JZ", /* 0X035 */
105 "JNZ", /* 0X036 */
106 "JBE", /* 0X037 */
107 "JNBE", /* 0X038 */
108 "JS", /* 0X039 */
109 "JNS", /* 0X03A */
110 "JP", /* 0X03B */
111 "JNP", /* 0X03C */
112 "JL", /* 0X03D */
113 "JNL", /* 0X03E */
114 "JLE", /* 0X03F */
115 "JNLE", /* 0X040 */
116 "JMP", /* 0X041 */
117 "LAHF", /* 0X042 */
118 "LAR", /* 0X043 */
119 "LEA", /* 0X044 */
120 "LEAVE", /* 0X045 */
121 "LGDT", /* 0X046 */
122 "LIDT", /* 0X047 */
123 "LGS", /* 0X048 */
124 "LSS", /* 0X049 */
125 "LDS", /* 0X04A */
126 "LES", /* 0X04B */
127 "LFS", /* 0X04C */
128 "LLDT", /* 0X04D */
129 "LMSW", /* 0X04E */
130 "LOCK", /* 0X04F */
131 "LODS", /* 0X050 */
132 "LODSB", /* 0X051 */
133 "LODSW", /* 0X052 */
134 "LODSD", /* 0X053 */
135 "LOOP", /* 0X054 */
136 "LOOPE", /* 0X055 */
137 "LOOPZ", /* 0X056 */
138 "LOOPNE", /* 0X057 */
139 "LOOPNZ", /* 0X058 */
140 "LSL", /* 0X059 */
141 "LTR", /* 0X05A */
142 "MOV", /* 0X05B */
143 "MOVS", /* 0X05C */
144 "MOVSB", /* 0X05D */
145 "MOVSW", /* 0X05E */
146 "MOVSD", /* 0X05F */
147 "MOVSX", /* 0X060 */
148 "MOVZX", /* 0X061 */
149 "MUL", /* 0X062 */
150 "NEG", /* 0X063 */
151 "NOP", /* 0X064 */
152 "NOT", /* 0X065 */
153 "OR", /* 0X066 */
154 "OUT", /* 0X067 */
155 "OUTS", /* 0X068 */
156 "OUTSB", /* 0X069 */
157 "OUTSW", /* 0X06A */
158 "OUTSD", /* 0X06B */
159 "POP", /* 0X06C */
160 "POPA", /* 0X06D */
161 "POPAD", /* 0X06E */
162 "POPF", /* 0X06F */
163 "POPFD", /* 0X070 */
164 "PUSH", /* 0X071 */
165 "PUSHA", /* 0X072 */
166 "PUSHAD", /* 0X073 */
167 "PUSHF", /* 0X074 */
168 "PUSHFD", /* 0X075 */
169 "RCL", /* 0X076 */
170 "RCR", /* 0X077 */
171 "ROL", /* 0X078 */
172 "ROR", /* 0X079 */
173 "REP", /* 0X07A */
174 "REPE", /* 0X07B */
175 "REPZ", /* 0X07C */
176 "REPNE", /* 0X07D */
177 "REPNZ", /* 0X07E */
178 "RET", /* 0X07F */
179 "SAHF", /* 0X080 */
180 "SAL", /* 0X081 */
181 "SAR", /* 0X082 */
182 "SHL", /* 0X083 */
183 "SHR", /* 0X084 */
184 "SBB", /* 0X085 */
185 "SCAS", /* 0X086 */
186 "SCASB", /* 0X087 */
187 "SCASW", /* 0X088 */
188 "SCASD", /* 0X089 */
189 "SET", /* 0X08A */
190 "SGDT", /* 0X08B */
191 "SIDT", /* 0X08C */
192 "SHLD", /* 0X08D */
193 "SHRD", /* 0X08E */
194 "SLDT", /* 0X08F */
195 "SMSW", /* 0X090 */
196 "STC", /* 0X091 */
197 "STD", /* 0X092 */
198 "STI", /* 0X093 */
199 "STOS", /* 0X094 */
200 "STOSB", /* 0X095 */
201 "STOSW", /* 0X096 */
202 "STOSD", /* 0X097 */
203 "STR", /* 0X098 */
204 "SUB", /* 0X099 */
205 "TEST", /* 0X09A */
206 "VERR", /* 0X09B */
207 "VERW", /* 0X09C */
208 "WAIT", /* 0X09D */
209 "XCHG", /* 0X09E */
210 "XLAT", /* 0X09F */
211 "XLATB", /* 0X0A0 */
212 "XOR", /* 0X0A1 */
213 "JCXZ", /* 0X0A2 */
214 "LOADALL", /* 0X0A3 */
215 "INVD", /* 0X0A4 */
216 "WBINVD", /* 0X0A5 */
217 "SETO", /* 0X0A6 */
218 "SETNO", /* 0X0A7 */
219 "SETB", /* 0X0A8 */
220 "SETNB", /* 0X0A9 */
221 "SETZ", /* 0X0AA */
222 "SETNZ", /* 0X0AB */
223 "SETBE", /* 0X0AC */
224 "SETNBE", /* 0X0AD */
225 "SETS", /* 0X0AE */
226 "SETNS", /* 0X0AF */
227 "SETP", /* 0X0B0 */
228 "SETNP", /* 0X0B1 */
229 "SETL", /* 0X0B2 */
230 "SETNL", /* 0X0B3 */
231 "SETLE", /* 0X0B4 */
232 "SETNLE", /* 0X0B5 */
233 "WRMSR", /* 0X0B6 */
234 "RDTSC", /* 0X0B7 */
235 "RDMSR", /* 0X0B8 */
236 "CPUID", /* 0X0B9 */
237 "RSM", /* 0X0BA */
238 "CMPXCHG", /* 0X0BB */
239 "XADD", /* 0X0BC */
240 "BSWAP", /* 0X0BD */
241 "INVLPG", /* 0X0BE */
242 "CMPXCHG8B", /* 0X0BF */
243 "JMP FAR", /* 0X0C0 */
244 "RETF", /* 0X0C1 */
245 "RDPMC" /* 0X0C2 */
246 };
247
248
249 char* sCoprocNames[] = {
250 "", /* 0X000 */
251 "F2XM1", /* 0X001 */
252 "FABS", /* 0X002 */
253 "FADD", /* 0X003 */
254 "FADDP", /* 0X004 */
255 "FBLD", /* 0X005 */
256 "FBSTP", /* 0X006 */
257 "FCHS", /* 0X007 */
258 "FCLEX", /* 0X008 */
259 "FCOM", /* 0X009 */
260 "FCOMP", /* 0X00A */
261 "FCOMPP", /* 0X00B */
262 "FCOS", /* 0X00C */
263 "FDECSTP", /* 0X00D */
264 "FDIV", /* 0X00E */
265 "FDIVP", /* 0X00F */
266 "FDIVR", /* 0X010 */
267 "FDIVRP", /* 0X011 */
268 "FFREE", /* 0X012 */
269 "FIADD", /* 0X013 */
270 "FICOM", /* 0X014 */
271 "FICOMP", /* 0X015 */
272 "FIDIV", /* 0X016 */
273 "FIDIVR", /* 0X017 */
274 "FILD", /* 0X018 */
275 "FIMUL", /* 0X019 */
276 "FINCSTP", /* 0X01A */
277 "FINIT", /* 0X01B */
278 "FIST", /* 0X01C */
279 "FISTP", /* 0X01D */
280 "FISUB", /* 0X01E */
281 "FISUBR", /* 0X01F */
282 "FLD", /* 0X020 */
283 "FLD1", /* 0X021 */
284 "FLDCW", /* 0X022 */
285 "FLDENV", /* 0X023 */
286 "FLDL2E", /* 0X024 */
287 "FLDL2T", /* 0X025 */
288 "FLDLG2", /* 0X026 */
289 "FLDLN2", /* 0X027 */
290 "FLDPI", /* 0X028 */
291 "FLDZ", /* 0X029 */
292 "FMUL", /* 0X02A */
293 "FMULP", /* 0X02B */
294 "FNOP", /* 0X02C */
295 "FPATAN", /* 0X02D */
296 "FPREM", /* 0X02E */
297 "FPREM1", /* 0X02F */
298 "FPTAN", /* 0X030 */
299 "FRNDINT", /* 0X031 */
300 "FRSTOR", /* 0X032 */
301 "FSAVE", /* 0X033 */
302 "FSCALE", /* 0X034 */
303 "FSIN", /* 0X035 */
304 "FSINCOS", /* 0X036 */
305 "FSQRT", /* 0X037 */
306 "FST", /* 0X038 */
307 "FSTCW", /* 0X039 */
308 "FSTENV", /* 0X03A */
309 "FSTP", /* 0X03B */
310 "FSTSW", /* 0X03C */
311 "FSUB", /* 0X03D */
312 "FSUBP", /* 0X03E */
313 "FSUBR", /* 0X03F */
314 "FSUBRP", /* 0X040 */
315 "FTST", /* 0X041 */
316 "FUCOM", /* 0X042 */
317 "FUCOMP", /* 0X043 */
318 "FUCOMPP", /* 0X044 */
319 "FXAM", /* 0X045 */
320 "FXCH", /* 0X046 */
321 "FXTRACT", /* 0X047 */
322 "FYL2X", /* 0X048 */
323 "FYL2XP1" /* 0X049 */
324 };
325
326
327 /******************************************************************************
328 *
329 * Table of the first byte of an instruction
330 *
331 ******************************************************************************/
332 TOpcodeData Op1[ 256 ] = {
333 { /* 00 */ _add ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
334 { /* 01 */ _add ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
335 { /* 02 */ _add ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
336 { /* 03 */ _add ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
337 { /* 04 */ _add ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
338 { /* 05 */ _add ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
339 { /* 06 */ _push ,1 ,_ES ,0 ,0 ,0 ,0, 0 },
340 { /* 07 */ _pop ,1 ,_ES ,0 ,0 ,0 ,0, 0 },
341 { /* 08 */ _or ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
342 { /* 09 */ _or ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
343 { /* 0A */ _or ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
344 { /* 0B */ _or ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
345 { /* 0C */ _or ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
346 { /* 0D */ _or ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
347 { /* 0E */ _push ,1 ,_CS ,0 ,0 ,0 ,0, 0 },
348 { /* 0F */ _2BESC ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
349
350 { /* 10 */ _adc ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
351 { /* 11 */ _adc ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
352 { /* 12 */ _adc ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
353 { /* 13 */ _adc ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
354 { /* 14 */ _adc ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
355 { /* 15 */ _adc ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
356 { /* 16 */ _push ,1 ,_SS ,0 ,0 ,0 ,0, 0 },
357 { /* 17 */ _pop ,1 ,_SS ,0 ,0 ,0 ,0, 0 },
358 { /* 18 */ _sbb ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
359 { /* 19 */ _sbb ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
360 { /* 1A */ _sbb ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
361 { /* 1B */ _sbb ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
362 { /* 1C */ _sbb ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
363 { /* 1D */ _sbb ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
364 { /* 1E */ _push ,1 ,_DS ,0 ,0 ,0 ,0, 0 },
365 { /* 1F */ _pop ,1 ,_DS ,0 ,0 ,0 ,0, 0 },
366
367 { /* 20 */ _and ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
368 { /* 21 */ _and ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
369 { /* 22 */ _and ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
370 { /* 23 */ _and ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
371 { /* 24 */ _and ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
372 { /* 25 */ _and ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
373 { /* 26 */ _S_ES ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
374 { /* 27 */ _daa ,0 ,0 ,0 ,0 ,0 ,0, 0 },
375 { /* 28 */ _sub ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
376 { /* 29 */ _sub ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
377 { /* 2A */ _sub ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
378 { /* 2B */ _sub ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
379 { /* 2C */ _sub ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
380 { /* 2D */ _sub ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
381 { /* 2E */ _S_CS ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
382 { /* 2F */ _das ,0 ,0 ,0 ,0 ,0 ,0, 0 },
383
384 { /* 30 */ _xor ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
385 { /* 31 */ _xor ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
386 { /* 32 */ _xor ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
387 { /* 33 */ _xor ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
388 { /* 34 */ _xor ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
389 { /* 35 */ _xor ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
390 { /* 36 */ _S_SS ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
391 { /* 37 */ _aaa ,0 ,0 ,0 ,0 ,0 ,0, 0 },
392 { /* 38 */ _cmp ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
393 { /* 39 */ _cmp ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
394 { /* 3A */ _cmp ,2 ,_Gb ,_Eb ,0 ,0 ,0, DIS_MODRM },
395 { /* 3B */ _cmp ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
396 { /* 3C */ _cmp ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
397 { /* 3D */ _cmp ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
398 { /* 3E */ _S_DS ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
399 { /* 3F */ _aas ,0 ,0 ,0 ,0 ,0 ,0, 0 },
400
401 { /* 40 */ _inc ,1 ,_eAX,0 ,0 ,0 ,0, 0 },
402 { /* 41 */ _inc ,1 ,_eCX,0 ,0 ,0 ,0, 0 },
403 { /* 42 */ _inc ,1 ,_eDX,0 ,0 ,0 ,0, 0 },
404 { /* 43 */ _inc ,1 ,_eBX,0 ,0 ,0 ,0, 0 },
405 { /* 44 */ _inc ,1 ,_eSP,0 ,0 ,0 ,0, 0 },
406 { /* 45 */ _inc ,1 ,_eBP,0 ,0 ,0 ,0, 0 },
407 { /* 46 */ _inc ,1 ,_eSI,0 ,0 ,0 ,0, 0 },
408 { /* 47 */ _inc ,1 ,_eDI,0 ,0 ,0 ,0, 0 },
409 { /* 48 */ _dec ,1 ,_eAX,0 ,0 ,0 ,0, 0 },
410 { /* 49 */ _dec ,1 ,_eCX,0 ,0 ,0 ,0, 0 },
411 { /* 4A */ _dec ,1 ,_eDX,0 ,0 ,0 ,0, 0 },
412 { /* 4B */ _dec ,1 ,_eBX,0 ,0 ,0 ,0, 0 },
413 { /* 4C */ _dec ,1 ,_eSP,0 ,0 ,0 ,0, 0 },
414 { /* 4D */ _dec ,1 ,_eBP,0 ,0 ,0 ,0, 0 },
415 { /* 4E */ _dec ,1 ,_eSI,0 ,0 ,0 ,0, 0 },
416 { /* 4F */ _dec ,1 ,_eDI,0 ,0 ,0 ,0, 0 },
417
418 { /* 50 */ _push ,1 ,_eAX,0 ,0 ,0 ,0, 0 },
419 { /* 51 */ _push ,1 ,_eCX,0 ,0 ,0 ,0, 0 },
420 { /* 52 */ _push ,1 ,_eDX,0 ,0 ,0 ,0, 0 },
421 { /* 53 */ _push ,1 ,_eBX,0 ,0 ,0 ,0, 0 },
422 { /* 54 */ _push ,1 ,_eSP,0 ,0 ,0 ,0, 0 },
423 { /* 55 */ _push ,1 ,_eBP,0 ,0 ,0 ,0, 0 },
424 { /* 56 */ _push ,1 ,_eSI,0 ,0 ,0 ,0, 0 },
425 { /* 57 */ _push ,1 ,_eDI,0 ,0 ,0 ,0, 0 },
426 { /* 58 */ _pop ,1 ,_eAX,0 ,0 ,0 ,0, 0 },
427 { /* 59 */ _pop ,1 ,_eCX,0 ,0 ,0 ,0, 0 },
428 { /* 5A */ _pop ,1 ,_eDX,0 ,0 ,0 ,0, 0 },
429 { /* 5B */ _pop ,1 ,_eBX,0 ,0 ,0 ,0, 0 },
430 { /* 5C */ _pop ,1 ,_eSP,0 ,0 ,0 ,0, 0 },
431 { /* 5D */ _pop ,1 ,_eBP,0 ,0 ,0 ,0, 0 },
432 { /* 5E */ _pop ,1 ,_eSI,0 ,0 ,0 ,0, 0 },
433 { /* 5F */ _pop ,1 ,_eDI,0 ,0 ,0 ,0, 0 },
434
435 { /* 60 */ _pusha ,0 ,0 ,0 ,0 ,0 ,0, DIS_NAME_FLAG },
436 { /* 61 */ _popa ,0 ,0 ,0 ,0 ,0 ,0, DIS_NAME_FLAG },
437 { /* 62 */ _bound ,2 ,_Gv ,_Ma ,0 ,0 ,0, DIS_MODRM },
438 { /* 63 */ _arpl ,2 ,_Ew ,_Rw ,0 ,0 ,0, DIS_MODRM },
439 { /* 64 */ _S_FS ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
440 { /* 65 */ _S_GS ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
441 { /* 66 */ _OPSIZ ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
442 { /* 67 */ _ADSIZ ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
443 { /* 68 */ _push ,1 ,_Iv ,0 ,0 ,0 ,0, 0 },
444 { /* 69 */ _imul ,2 ,_Gv ,_Ev ,_Iv ,0 ,0, DIS_MODRM },
445 { /* 6A */ _push ,1 ,_Ib ,0 ,0 ,0 ,0, 0 },
446 { /* 6B */ _imul ,3 ,_Gv ,_Ev ,_Ib ,0 ,0, DIS_MODRM },
447 { /* 6C */ _insb ,2 ,_Yb ,_DX ,0 ,0 ,0, SCAN_TERMINATING },
448 { /* 6D */ _insw ,2 ,_Yv ,_DX ,0 ,0 ,0, SCAN_TERMINATING | DIS_NAME_FLAG },
449 { /* 6E */ _outsb ,2 ,_DX ,_Xb ,0 ,0 ,0, SCAN_TERMINATING },
450 { /* 6F */ _outsw ,2 ,_DX ,_Xv ,0 ,0 ,0, SCAN_TERMINATING | DIS_NAME_FLAG },
451
452 { /* 70 */ _jo ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
453 { /* 71 */ _jno ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
454 { /* 72 */ _jb ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
455 { /* 73 */ _jnb ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
456 { /* 74 */ _jz ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
457 { /* 75 */ _jnz ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
458 { /* 76 */ _jbe ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
459 { /* 77 */ _jnbe ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
460 { /* 78 */ _js ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
461 { /* 79 */ _jns ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
462 { /* 7A */ _jp ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
463 { /* 7B */ _jnp ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
464 { /* 7C */ _jl ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
465 { /* 7D */ _jnl ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
466 { /* 7E */ _jle ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
467 { /* 7F */ _jnle ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
468
469 { /* 80 */ _GRP1a ,2 ,_Eb ,_Ib ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
470 { /* 81 */ _GRP1b ,2 ,_Ev ,_Iv ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
471 { /* 82 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
472 { /* 83 */ _GRP1c ,2 ,_Ev ,_Ib ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
473 { /* 84 */ _test ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
474 { /* 85 */ _test ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
475 { /* 86 */ _xchg ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
476 { /* 87 */ _xchg ,2 ,_Ev ,_Gv ,0 ,0 ,INSTR_READ_WRITE | INSTR_WORD_DWORD, DIS_MODRM },
477 { /* 88 */ _mov ,2 ,_Eb ,_Gb ,0 ,0 ,INSTR_WRITE | INSTR_BYTE, DIS_MODRM },
478 { /* 89 */ _mov ,2 ,_Ev ,_Gv ,0 ,0 ,INSTR_WRITE | INSTR_WORD, DIS_MODRM },
479 { /* 8A */ _mov ,2 ,_Gb ,_Eb ,0 ,0 ,INSTR_READ | INSTR_BYTE, DIS_MODRM },
480 { /* 8B */ _mov ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
481 { /* 8C */ _mov ,2 ,_Ew ,_Sw ,0 ,0 ,0, DIS_MODRM },
482 { /* 8D */ _lea ,2 ,_Gv ,_M ,0 ,0 ,0, DIS_MODRM },
483 { /* 8E */ _mov ,2 ,_Sw ,_Ew ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
484 { /* 8F */ _pop ,1 ,_Ev ,0 ,0 ,0 ,0, DIS_MODRM },
485
486 { /* 90 */ _nop ,0 ,0 ,0 ,0 ,0 ,0, 0 },
487 { /* 91 */ _xchg ,2 ,_eCX,_eAX,0 ,0 ,0, 0 },
488 { /* 92 */ _xchg ,2 ,_eDX,_eAX,0 ,0 ,0, 0 },
489 { /* 93 */ _xchg ,2 ,_eBX,_eAX,0 ,0 ,0, 0 },
490 { /* 94 */ _xchg ,2 ,_eSP,_eAX,0 ,0 ,0, 0 },
491 { /* 95 */ _xchg ,2 ,_eBP,_eAX,0 ,0 ,0, 0 },
492 { /* 96 */ _xchg ,2 ,_eSI,_eAX,0 ,0 ,0, 0 },
493 { /* 97 */ _xchg ,2 ,_eDI,_eAX,0 ,0 ,0, 0 },
494 { /* 98 */ _cbw ,0 ,0 ,0 ,0 ,0 ,0, DIS_NAME_FLAG },
495 { /* 99 */ _cwd ,0 ,0 ,0 ,0 ,0 ,0, DIS_NAME_FLAG },
496 { /* 9A */ _call ,1 ,_Ap ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
497 { /* 9B */ _wait ,0 ,0 ,0 ,0 ,0 ,0, 0 },
498 { /* 9C */ _pushf ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING | DIS_NAME_FLAG },
499 { /* 9D */ _popf ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING | DIS_NAME_FLAG },
500 { /* 9E */ _sahf ,0 ,0 ,0 ,0 ,0 ,0, 0 },
501 { /* 9F */ _lahf ,0 ,0 ,0 ,0 ,0 ,0, 0 },
502
503 { /* A0 */ _mov ,2 ,_AL ,_O ,0 ,0 ,0, 0 },
504 { /* A1 */ _mov ,2 ,_eAX,_O ,0 ,0 ,INSTR_READ | INSTR_WORD_DWORD, 0 },
505 { /* A2 */ _mov ,2 ,_O ,_AL ,0 ,0 ,0, 0 },
506 { /* A3 */ _mov ,2 ,_O ,_eAX,0 ,0 ,INSTR_WRITE | INSTR_WORD_DWORD, 0 },
507 { /* A4 */ _movsb ,2 ,_Yb ,_Xb ,0 ,0 ,0, 0 },
508 { /* A5 */ _movsw ,2 ,_Yv ,_Xv ,0 ,0 ,0, DIS_NAME_FLAG },
509 { /* A6 */ _cmpsb ,2 ,_Xb ,_Yb ,0 ,0 ,0, 0 },
510 { /* A7 */ _cmpsw ,2 ,_Xv ,_Yv ,0 ,0 ,0, DIS_NAME_FLAG },
511 { /* A8 */ _test ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
512 { /* A9 */ _test ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
513 { /* AA */ _stosb ,2 ,_Yb ,_AL ,0 ,0 ,0, 0 },
514 { /* AB */ _stosw ,2 ,_Yb ,_eAX,0 ,0 ,0, DIS_NAME_FLAG },
515 { /* AC */ _lodsb ,2 ,_AL ,_Xb ,0 ,0 ,INSTR_READ | INSTR_BYTE, 0 },
516 { /* AD */ _lodsw ,2 ,_eAX,_Xv ,0 ,0 ,INSTR_READ | INSTR_WORD_DWORD, DIS_NAME_FLAG },
517 { /* AE */ _scasb ,2 ,_AL ,_Xb ,0 ,0 ,0, 0 },
518 { /* AF */ _scasw ,2 ,_eAX,_Xv ,0 ,0 ,0, DIS_NAME_FLAG },
519
520 { /* B0 */ _mov ,2 ,_AL ,_Ib ,0 ,0 ,0, 0 },
521 { /* B1 */ _mov ,2 ,_CL ,_Ib ,0 ,0 ,0, 0 },
522 { /* B2 */ _mov ,2 ,_DL ,_Ib ,0 ,0 ,0, 0 },
523 { /* B3 */ _mov ,2 ,_BL ,_Ib ,0 ,0 ,0, 0 },
524 { /* B4 */ _mov ,2 ,_AH ,_Ib ,0 ,0 ,0, 0 },
525 { /* B5 */ _mov ,2 ,_CH ,_Ib ,0 ,0 ,0, 0 },
526 { /* B6 */ _mov ,2 ,_DH ,_Ib ,0 ,0 ,0, 0 },
527 { /* B7 */ _mov ,2 ,_BH ,_Ib ,0 ,0 ,0, 0 },
528 { /* B8 */ _mov ,2 ,_eAX,_Iv ,0 ,0 ,0, 0 },
529 { /* B9 */ _mov ,2 ,_eCX,_Iv ,0 ,0 ,0, 0 },
530 { /* BA */ _mov ,2 ,_eDX,_Iv ,0 ,0 ,0, 0 },
531 { /* BB */ _mov ,2 ,_eBX,_Iv ,0 ,0 ,0, 0 },
532 { /* BC */ _mov ,2 ,_eSP,_Iv ,0 ,0 ,0, 0 },
533 { /* BD */ _mov ,2 ,_eBP,_Iv ,0 ,0 ,0, 0 },
534 { /* BE */ _mov ,2 ,_eSI,_Iv ,0 ,0 ,0, 0 },
535 { /* BF */ _mov ,2 ,_eDI,_Iv ,0 ,0 ,0, 0 },
536
537 { /* C0 */ _GRP2a ,2 ,_Eb ,_Ib ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
538 { /* C1 */ _GRP2b ,2 ,_Ev ,_Ib ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
539 { /* C2 */ _ret ,1 ,_Iw ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
540 { /* C3 */ _ret ,0 ,0 ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
541 { /* C4 */ _les ,2 ,_Gv ,_Mp ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
542 { /* C5 */ _lds ,2 ,_Gv ,_Mp ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
543 { /* C6 */ _mov ,2 ,_Eb ,_Ib ,0 ,0 ,0, DIS_MODRM },
544 { /* C7 */ _mov ,2 ,_Ev ,_Iv ,0 ,0 ,0, DIS_MODRM },
545 { /* C8 */ _enter ,2 ,_Iw ,_Ib ,0 ,0 ,0, 0 },
546 { /* C9 */ _leave ,0 ,0 ,0 ,0 ,0 ,0, 0 },
547 { /* CA */ _retf ,1 ,_Iw ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
548 { /* CB */ _retf ,0 ,0 ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
549 { /* CC */ _int ,1 ,_3 ,0 ,0 ,0 ,0, 0 },
550 { /* CD */ _int ,1 ,_Ib ,0 ,0 ,0 ,0, SCAN_TERMINATING },
551 { /* CE */ _into ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
552 { /* CF */ _iret ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
553
554 { /* D0 */ _GRP2c ,2 ,_Eb ,_1 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
555 { /* D1 */ _GRP2d ,2 ,_Ev ,_1 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
556 { /* D2 */ _GRP2e ,2 ,_Eb ,_CL ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
557 { /* D3 */ _GRP2f ,2 ,_Ev ,_CL ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
558 { /* D4 */ _aam ,1 ,_Ib ,0 ,0 ,0 ,0, 0 },
559 { /* D5 */ _aad ,1 ,_Ib ,0 ,0 ,0 ,0, 0 },
560 { /* D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
561 { /* D7 */ _xlat ,0 ,0 ,0 ,0 ,0 ,0, 0 },
562 { /* D8 */ _EscD8 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
563 { /* D9 */ _EscD9 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
564 { /* DA */ _EscDA ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
565 { /* DB */ _EscDB ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
566 { /* DC */ _EscDC ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
567 { /* DD */ _EscDD ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
568 { /* DE */ _EscDE ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
569 { /* DF */ _EscDF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
570
571 { /* E0 */ _loopne ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
572 { /* E1 */ _loope ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
573 { /* E2 */ _loop ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
574 { /* E3 */ _jcxz ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
575 { /* E4 */ _in ,2 ,_AL ,_Ib ,0 ,0 ,0, SCAN_TERMINATING },
576 { /* E5 */ _in ,2 ,_eAX,_Ib ,0 ,0 ,0, SCAN_TERMINATING },
577 { /* E6 */ _out ,2 ,_Ib ,_AL ,0 ,0 ,0, SCAN_TERMINATING },
578 { /* E7 */ _out ,2 ,_Ib ,_eAX,0 ,0 ,0, SCAN_TERMINATING },
579 { /* E8 */ _call ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
580 { /* E9 */ _jmp ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_JUMP },
581 { /* EA */ _jmpf ,1 ,_Ap ,0 ,0 ,0 ,0, SCAN_TERMINATING },
582 { /* EB */ _jmp ,1 ,_Jb ,0 ,0 ,0 ,0, SCAN_JUMP },
583 { /* EC */ _in ,2 ,_AL ,_DX ,0 ,0 ,0, SCAN_TERMINATING },
584 { /* ED */ _in ,2 ,_eAX,_DX ,0 ,0 ,0, SCAN_TERMINATING },
585 { /* EE */ _out ,2 ,_DX ,_AL ,0 ,0 ,0, SCAN_TERMINATING },
586 { /* EF */ _out ,2 ,_DX ,_eAX,0 ,0 ,0, SCAN_TERMINATING },
587
588 { /* F0 */ _lock ,0 ,0 ,0 ,0 ,0 ,0, 0 },
589 { /* F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
590 { /* F2 */ _REPNE ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
591 { /* F3 */ _REP ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
592 { /* F4 */ _hlt ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
593 { /* F5 */ _cmc ,0 ,0 ,0 ,0 ,0 ,0, 0 },
594 { /* F6 */ _GRP3a ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
595 { /* F7 */ _GRP3b ,1 ,_Ev ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
596 { /* F8 */ _clc ,0 ,0 ,0 ,0 ,0 ,0, 0 },
597 { /* F9 */ _stc ,0 ,0 ,0 ,0 ,0 ,0, 0 },
598 { /* FA */ _cli ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
599 { /* FB */ _sti ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
600 { /* FC */ _cld ,0 ,0 ,0 ,0 ,0 ,0, 0 },
601 { /* FD */ _std ,0 ,0 ,0 ,0 ,0 ,0, 0 },
602 { /* FE */ _GRP4 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
603 { /* FF */ _GRP5 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM }
604 };
605
606
607 /******************************************************************************
608 *
609 * Table of the second byte of an instruction where the first byte was FF,
610 * the 2-byte escape code
611 *
612 ******************************************************************************/
613 TOpcodeData Op2[ 256 ] = {
614 { /* 0F 00 */ _GRP6 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
615 { /* 0F 01 */ _GRP7 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
616 { /* 0F 02 */ _lar ,2 ,_Gv ,_Ew ,0 ,0 ,0, DIS_MODRM },
617 { /* 0F 03 */ _lsl ,2 ,_Gv ,_Ew ,0 ,0 ,0, DIS_MODRM },
618 { /* 0F 04 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
619 { /* 0F 05 */ _loadall ,0 ,0 ,0 ,0 ,0 ,0, 0 },
620 { /* 0F 06 */ _clts ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
621 { /* 0F 07 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
622 { /* 0F 08 */ _invd ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
623 { /* 0F 09 */ _wbinv ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
624 { /* 0F 0A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
625 { /* 0F 0B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
626 { /* 0F 0C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
627 { /* 0F 0D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
628 { /* 0F 0E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
629 { /* 0F 0F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
630
631 { /* 0F 10 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
632 { /* 0F 11 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
633 { /* 0F 12 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
634 { /* 0F 13 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
635 { /* 0F 14 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
636 { /* 0F 15 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
637 { /* 0F 16 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
638 { /* 0F 17 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
639 { /* 0F 18 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
640 { /* 0F 19 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
641 { /* 0F 1A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
642 { /* 0F 1B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
643 { /* 0F 1C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
644 { /* 0F 1D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
645 { /* 0F 1E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
646 { /* 0F 1F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
647
648 { /* 0F 20 */ _mov ,2 ,_Rd ,_Cd ,0 ,0 ,0, SCAN_TERMINATING | DIS_MODRM },
649 { /* 0F 21 */ _mov ,2 ,_Rd ,_Dd ,0 ,0 ,0, SCAN_TERMINATING | DIS_MODRM },
650 { /* 0F 22 */ _mov ,2 ,_Cd ,_Rd ,0 ,0 ,0, SCAN_TERMINATING | DIS_MODRM },
651 { /* 0F 23 */ _mov ,2 ,_Dd ,_Rd ,0 ,0 ,0, SCAN_TERMINATING | DIS_MODRM },
652 { /* 0F 24 */ _mov ,2 ,_Rd ,_Td ,0 ,0 ,0, DIS_MODRM },
653 { /* 0F 25 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
654 { /* 0F 26 */ _mov ,2 ,_Td ,_Rd ,0 ,0 ,0, DIS_MODRM },
655 { /* 0F 27 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
656 { /* 0F 28 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
657 { /* 0F 29 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
658 { /* 0F 2A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
659 { /* 0F 2B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
660 { /* 0F 2C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
661 { /* 0F 2D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
662 { /* 0F 2E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
663 { /* 0F 2F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
664
665 { /* 0F 30 */ _wrmsr ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
666 { /* 0F 31 */ _rdtsc ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
667 { /* 0F 32 */ _rdmsr ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
668 { /* 0F 33 */ _rdpmc ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
669 { /* 0F 34 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
670 { /* 0F 35 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
671 { /* 0F 36 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
672 { /* 0F 37 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
673 { /* 0F 38 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
674 { /* 0F 39 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
675 { /* 0F 3A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
676 { /* 0F 3B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
677 { /* 0F 3C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
678 { /* 0F 3D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
679 { /* 0F 3E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
680 { /* 0F 3F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
681
682 { /* 0F 40 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
683 { /* 0F 41 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
684 { /* 0F 42 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
685 { /* 0F 43 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
686 { /* 0F 44 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
687 { /* 0F 45 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
688 { /* 0F 46 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
689 { /* 0F 47 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
690 { /* 0F 48 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
691 { /* 0F 49 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
692 { /* 0F 4A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
693 { /* 0F 4B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
694 { /* 0F 4C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
695 { /* 0F 4D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
696 { /* 0F 4E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
697 { /* 0F 4F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
698
699 { /* 0F 50 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
700 { /* 0F 51 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
701 { /* 0F 52 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
702 { /* 0F 53 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
703 { /* 0F 54 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
704 { /* 0F 55 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
705 { /* 0F 56 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
706 { /* 0F 57 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
707 { /* 0F 58 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
708 { /* 0F 59 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
709 { /* 0F 5A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
710 { /* 0F 5B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
711 { /* 0F 5C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
712 { /* 0F 5D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
713 { /* 0F 5E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
714 { /* 0F 5F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
715
716 { /* 0F 60 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
717 { /* 0F 61 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
718 { /* 0F 62 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
719 { /* 0F 63 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
720 { /* 0F 64 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
721 { /* 0F 65 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
722 { /* 0F 66 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
723 { /* 0F 67 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
724 { /* 0F 68 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
725 { /* 0F 69 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
726 { /* 0F 6A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
727 { /* 0F 6B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
728 { /* 0F 6C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
729 { /* 0F 6D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
730 { /* 0F 6E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
731 { /* 0F 6F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
732
733 { /* 0F 70 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
734 { /* 0F 71 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
735 { /* 0F 72 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
736 { /* 0F 73 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
737 { /* 0F 74 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
738 { /* 0F 75 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
739 { /* 0F 76 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
740 { /* 0F 77 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
741 { /* 0F 78 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
742 { /* 0F 79 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
743 { /* 0F 7A */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
744 { /* 0F 7B */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
745 { /* 0F 7C */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
746 { /* 0F 7D */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
747 { /* 0F 7E */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
748 { /* 0F 7F */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
749
750 { /* 0F 80 */ _jo ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
751 { /* 0F 81 */ _jno ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
752 { /* 0F 82 */ _jb ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
753 { /* 0F 83 */ _jnb ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
754 { /* 0F 84 */ _jz ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
755 { /* 0F 85 */ _jnz ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
756 { /* 0F 86 */ _jbe ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
757 { /* 0F 87 */ _jnbe ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
758 { /* 0F 88 */ _js ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
759 { /* 0F 89 */ _jns ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
760 { /* 0F 8A */ _jp ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
761 { /* 0F 8B */ _jnp ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
762 { /* 0F 8C */ _jl ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
763 { /* 0F 8D */ _jnl ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
764 { /* 0F 8E */ _jle ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
765 { /* 0F 8F */ _jnle ,1 ,_Jv ,0 ,0 ,0 ,0, SCAN_COND_JUMP },
766
767 { /* 0F 90 */ _seto ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
768 { /* 0F 91 */ _setno ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
769 { /* 0F 92 */ _setb ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
770 { /* 0F 93 */ _setnb ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
771 { /* 0F 94 */ _setz ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
772 { /* 0F 95 */ _setnz ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
773 { /* 0F 96 */ _setbe ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
774 { /* 0F 97 */ _setnbe ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
775 { /* 0F 98 */ _sets ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
776 { /* 0F 99 */ _setns ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
777 { /* 0F 9A */ _setp ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
778 { /* 0F 9B */ _setnp ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
779 { /* 0F 9C */ _setl ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
780 { /* 0F 9D */ _setnl ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
781 { /* 0F 9E */ _setle ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
782 { /* 0F 9F */ _setnle ,1 ,_Eb ,0 ,0 ,0 ,0, DIS_MODRM },
783
784 { /* 0F A0 */ _push ,1 ,_FS ,0 ,0 ,0 ,0, 0 },
785 { /* 0F A1 */ _pop ,1 ,_FS ,0 ,0 ,0 ,0, 0 },
786 { /* 0F A2 */ _cpuid ,0 ,0 ,0 ,0 ,0 ,0, SCAN_TERMINATING },
787 { /* 0F A3 */ _bt ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
788 { /* 0F A4 */ _shld ,3 ,_Ev ,_Gv ,_Ib ,0 ,0, DIS_MODRM },
789 { /* 0F A5 */ _shld ,3 ,_Ev ,_Gv ,_CL ,0 ,0, DIS_MODRM },
790 { /* 0F A6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
791 { /* 0F A7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
792 { /* 0F A8 */ _push ,1 ,_GS ,0 ,0 ,0 ,0, 0 },
793 { /* 0F A9 */ _pop ,1 ,_GS ,0 ,0 ,0 ,0, 0 },
794 { /* 0F AA */ _rsm ,0 ,0 ,0 ,0 ,0 ,0, 0 },
795 { /* 0F AB */ _bts ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
796 { /* 0F AC */ _shrd ,3 ,_Ev ,_Gv ,_Ib ,0 ,0, DIS_MODRM },
797 { /* 0F AD */ _shrd ,3 ,_Ev ,_Gv ,_CL ,0 ,0, DIS_MODRM },
798 { /* 0F AE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
799 { /* 0F AF */ _imul ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
800
801 { /* 0F B0 */ _cmpx ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
802 { /* 0F B1 */ _cmpx ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
803 { /* 0F B2 */ _lss ,2 ,_Gv ,_Mp ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
804 { /* 0F B3 */ _btr ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
805 { /* 0F B4 */ _lfs ,2 ,_Gv ,_Mp ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
806 { /* 0F B5 */ _lgs ,2 ,_Gv ,_Mp ,0 ,0 ,0, SCAN_TERM_PMODE | DIS_MODRM },
807 { /* 0F B6 */ _movzx ,2 ,_Gv ,_Eb ,0 ,0 ,0, DIS_MODRM },
808 { /* 0F B7 */ _movzx ,2 ,_Gv ,_Ew ,0 ,0 ,0, DIS_MODRM },
809 { /* 0F B8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
810 { /* 0F B9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
811 { /* 0F BA */ _GRP8 ,2 ,_Ev ,_Ib ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
812 { /* 0F BB */ _btc ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
813 { /* 0F BC */ _bsf ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
814 { /* 0F BD */ _bsr ,2 ,_Gv ,_Ev ,0 ,0 ,0, DIS_MODRM },
815 { /* 0F BE */ _movsx ,2 ,_Gv ,_Eb ,0 ,0 ,0, DIS_MODRM },
816 { /* 0F BF */ _movsx ,2 ,_Gv ,_Ew ,0 ,0 ,0, DIS_MODRM },
817
818 { /* 0F C0 */ _xadd ,2 ,_Eb ,_Gb ,0 ,0 ,0, DIS_MODRM },
819 { /* 0F C1 */ _xadd ,2 ,_Ev ,_Gv ,0 ,0 ,0, DIS_MODRM },
820 { /* 0F C2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
821 { /* 0F C3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
822 { /* 0F C4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
823 { /* 0F C5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
824 { /* 0F C6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
825 { /* 0F C7 */ _GRP9 ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL | DIS_MODRM },
826 { /* 0F C8 */ _bswap ,1 ,_eAX,0 ,0 ,0 ,0, 0 },
827 { /* 0F C9 */ _bswap ,1 ,_eCX,0 ,0 ,0 ,0, 0 },
828 { /* 0F CA */ _bswap ,1 ,_eDX,0 ,0 ,0 ,0, 0 },
829 { /* 0F CB */ _bswap ,1 ,_eBX,0 ,0 ,0 ,0, 0 },
830 { /* 0F CC */ _bswap ,1 ,_eSP,0 ,0 ,0 ,0, 0 },
831 { /* 0F CD */ _bswap ,1 ,_eBP,0 ,0 ,0 ,0, 0 },
832 { /* 0F CE */ _bswap ,1 ,_eSI,0 ,0 ,0 ,0, 0 },
833 { /* 0F CF */ _bswap ,1 ,_eDI,0 ,0 ,0 ,0, 0 },
834
835 { /* 0F D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
836 { /* 0F D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
837 { /* 0F D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
838 { /* 0F D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
839 { /* 0F D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
840 { /* 0F D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
841 { /* 0F D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
842 { /* 0F D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
843 { /* 0F D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
844 { /* 0F D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
845 { /* 0F DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
846 { /* 0F DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
847 { /* 0F DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
848 { /* 0F DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
849 { /* 0F DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
850 { /* 0F DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
851
852 { /* 0F E0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
853 { /* 0F E1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
854 { /* 0F E2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
855 { /* 0F E3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
856 { /* 0F E4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
857 { /* 0F E5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
858 { /* 0F E6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
859 { /* 0F E7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
860 { /* 0F E8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
861 { /* 0F E9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
862 { /* 0F EA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
863 { /* 0F EB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
864 { /* 0F EC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
865 { /* 0F ED */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
866 { /* 0F EE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
867 { /* 0F EF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
868
869 { /* 0F F0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
870 { /* 0F F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
871 { /* 0F F2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
872 { /* 0F F3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
873 { /* 0F F4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
874 { /* 0F F5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
875 { /* 0F F6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
876 { /* 0F F7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
877 { /* 0F F8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
878 { /* 0F F9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
879 { /* 0F FA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
880 { /* 0F FB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
881 { /* 0F FC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
882 { /* 0F FD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
883 { /* 0F FE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
884 { /* 0F FF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }
885 };
886
887
888 /******************************************************************************
889 *
890 * Table for Groups codes; groups 1 - 9
891 *
892 * (These records have DIS_MODRM implied)
893 *
894 ******************************************************************************/
895 TOpcodeData Groups[ 17 ][ 8 ] = {
896 {{ /* Group 1a */ _add ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
897 { /* 001 */ _or ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
898 { /* 010 */ _adc ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
899 { /* 011 */ _sbb ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
900 { /* 100 */ _and ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
901 { /* 101 */ _sub ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
902 { /* 110 */ _xor ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
903 { /* 111 */ _cmp ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 }},
904
905 {{ /* Group 1b */ _add ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
906 { /* 001 */ _or ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
907 { /* 010 */ _adc ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
908 { /* 011 */ _sbb ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
909 { /* 100 */ _and ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
910 { /* 101 */ _sub ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
911 { /* 110 */ _xor ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
912 { /* 111 */ _cmp ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 }},
913
914 {{ /* Group 1c */ _add ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
915 { /* 001 */ _or ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
916 { /* 010 */ _adc ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
917 { /* 011 */ _sbb ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
918 { /* 100 */ _and ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
919 { /* 101 */ _sub ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
920 { /* 110 */ _xor ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
921 { /* 111 */ _cmp ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 }},
922
923 {{ /* Group 2a */ _rol ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
924 { /* 001 */ _ror ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
925 { /* 010 */ _rcl ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
926 { /* 011 */ _rcr ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
927 { /* 100 */ _sal ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
928 { /* 101 */ _shr ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
929 { /* 110 */ _shl ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
930 { /* 111 */ _sar ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 }},
931
932 {{ /* Group 2b */ _rol ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
933 { /* 001 */ _ror ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
934 { /* 010 */ _rcl ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
935 { /* 011 */ _rcr ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
936 { /* 100 */ _sal ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
937 { /* 101 */ _shr ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
938 { /* 110 */ _shl ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
939 { /* 111 */ _sar ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 }},
940
941 {{ /* Group 2c */ _rol ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
942 { /* 001 */ _ror ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
943 { /* 010 */ _rcl ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
944 { /* 011 */ _rcr ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
945 { /* 100 */ _sal ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
946 { /* 101 */ _shr ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
947 { /* 110 */ _shl ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 },
948 { /* 111 */ _sar ,2 ,_Eb ,_1 ,0 ,0 ,0, 0 }},
949
950 {{ /* Group 2d */ _rol ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
951 { /* 001 */ _ror ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
952 { /* 010 */ _rcl ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
953 { /* 011 */ _rcr ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
954 { /* 100 */ _sal ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
955 { /* 101 */ _shr ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
956 { /* 110 */ _shl ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 },
957 { /* 111 */ _sar ,2 ,_Ev ,_1 ,0 ,0 ,0, 0 }},
958
959 {{ /* Group 2e */ _rol ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
960 { /* 001 */ _ror ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
961 { /* 010 */ _rcl ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
962 { /* 011 */ _rcr ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
963 { /* 100 */ _sal ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
964 { /* 101 */ _shr ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
965 { /* 110 */ _shl ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 },
966 { /* 111 */ _sar ,2 ,_Eb ,_CL ,0 ,0 ,0, 0 }},
967
968 {{ /* Group 2f */ _rol ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
969 { /* 001 */ _ror ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
970 { /* 010 */ _rcl ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
971 { /* 011 */ _rcr ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
972 { /* 100 */ _sal ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
973 { /* 101 */ _shr ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
974 { /* 110 */ _shl ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 },
975 { /* 111 */ _sar ,2 ,_Ev ,_CL ,0 ,0 ,0, 0 }},
976
977 {{ /* Group 3a */ _test ,2 ,_Eb ,_Ib ,0 ,0 ,0, 0 },
978 { /* 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
979 { /* 010 */ _not ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
980 { /* 011 */ _neg ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
981 { /* 100 */ _mul ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
982 { /* 101 */ _imul ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
983 { /* 110 */ _div ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
984 { /* 111 */ _idiv ,1 ,_Eb ,0 ,0 ,0 ,0, 0 }},
985
986 {{ /* Group 3b */ _test ,2 ,_Ev ,_Iv ,0 ,0 ,0, 0 },
987 { /* 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
988 { /* 010 */ _not ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
989 { /* 011 */ _neg ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
990 { /* 100 */ _mul ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
991 { /* 101 */ _imul ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
992 { /* 110 */ _div ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
993 { /* 111 */ _idiv ,1 ,_Ev ,0 ,0 ,0 ,0, 0 }},
994
995 {{ /* Group 4 */ _inc ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
996 { /* 001 */ _dec ,1 ,_Eb ,0 ,0 ,0 ,0, 0 },
997 { /* 010 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
998 { /* 011 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
999 { /* 100 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1000 { /* 101 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1001 { /* 110 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1002 { /* 111 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1003
1004 {{ /* Group 5 */ _inc ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
1005 { /* 001 */ _dec ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
1006 { /* 010 */ _call ,1 ,_Ev ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
1007 { /* 011 */ _call ,1 ,_Ep ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
1008 { /* 100 */ _jmp ,1 ,_Ev ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
1009 { /* 101 */ _jmp ,1 ,_Ep ,0 ,0 ,0 ,0, SCAN_SINGLE_STEP },
1010 { /* 110 */ _push ,1 ,_Ev ,0 ,0 ,0 ,0, 0 },
1011 { /* 111 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1012
1013 {{ /* Group 6 */ _sldt ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1014 { /* 001 */ _str ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1015 { /* 010 */ _lldt ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1016 { /* 011 */ _ltr ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1017 { /* 100 */ _verr ,1 ,_Ew ,0 ,0 ,0 ,0, 0 },
1018 { /* 101 */ _verw ,1 ,_Ew ,0 ,0 ,0 ,0, 0 },
1019 { /* 110 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1020 { /* 111 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1021
1022 {{ /* Group 7 */ _sgdt ,1 ,_Ms ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1023 { /* 001 */ _sidt ,1 ,_Ms ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1024 { /* 010 */ _lgdt ,1 ,_Ms ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1025 { /* 011 */ _lidt ,1 ,_Ms ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1026 { /* 100 */ _smsw ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1027 { /* 101 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1028 { /* 110 */ _lmsw ,1 ,_Ew ,0 ,0 ,0 ,0, SCAN_TERMINATING },
1029 { /* 111 */ _invpg ,1 ,_M ,0 ,0 ,0 ,0, SCAN_TERMINATING }},
1030
1031 {{ /* Group 8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1032 { /* 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1033 { /* 010 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1034 { /* 011 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1035 { /* 100 */ _bt ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
1036 { /* 101 */ _bts ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
1037 { /* 110 */ _btr ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 },
1038 { /* 111 */ _btc ,2 ,_Ev ,_Ib ,0 ,0 ,0, 0 }},
1039
1040 {{ /* Group 9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1041 { /* 001 */ _cmpx8 ,1 ,_Mq ,0 ,0 ,0 ,0, 0 },
1042 { /* 010 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1043 { /* 011 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1044 { /* 100 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1045 { /* 101 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1046 { /* 110 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1047 { /* 111 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }}
1048 };
1049
1050
1051 /******************************************************************************
1052 *
1053 * Coprocessor instructions have the prefix byte of D8-DF.
1054 * The Coproc1 table defines instructions that have the second byte in the
1055 * range 00-BF
1056 *
1057 ******************************************************************************/
1058 TOpcodeData Coproc1[ 8 ][ 8 ] = {
1059 {{ /* D8 000 */ _fadd ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1060 { /* D8 001 */ _fmul ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1061 { /* D8 010 */ _fcom ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1062 { /* D8 011 */ _fcomp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1063 { /* D8 100 */ _fsub ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1064 { /* D8 101 */ _fsubr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1065 { /* D8 110 */ _fdiv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1066 { /* D8 111 */ _fdivr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1067
1068 {{ /* D9 000 */ _fld ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1069 { /* D9 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1070 { /* D9 010 */ _fst ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1071 { /* D9 011 */ _fstp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1072 { /* D9 100 */ _fldenv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1073 { /* D9 101 */ _fldcw ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1074 { /* D9 110 */ _fstenv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1075 { /* D9 111 */ _fstcw ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1076
1077 {{ /* DA 000 */ _fiadd ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1078 { /* DA 001 */ _fimul ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1079 { /* DA 010 */ _ficom ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1080 { /* DA 011 */ _ficomp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1081 { /* DA 100 */ _fisub ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1082 { /* DA 101 */ _fisubr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1083 { /* DA 110 */ _fidiv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1084 { /* DA 111 */ _fidivr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1085
1086 {{ /* DB 000 */ _fild ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1087 { /* DB 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1088 { /* DB 010 */ _fist ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1089 { /* DB 011 */ _fistp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1090 { /* DB 100 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1091 { /* DB 101 */ _fld ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1092 { /* DB 110 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1093 { /* DB 111 */ _fstp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1094
1095 {{ /* DC 000 */ _fadd ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1096 { /* DC 001 */ _fmul ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1097 { /* DC 010 */ _fcom ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1098 { /* DC 011 */ _fcomp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1099 { /* DC 100 */ _fsub ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1100 { /* DC 101 */ _fsubr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1101 { /* DC 110 */ _fdiv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1102 { /* DC 111 */ _fdivr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1103
1104 {{ /* DD 000 */ _fld ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1105 { /* DD 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1106 { /* DD 010 */ _fst ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1107 { /* DD 011 */ _fstp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1108 { /* DD 100 */ _frstor ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1109 { /* DD 101 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1110 { /* DD 110 */ _fsave ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1111 { /* DD 111 */ _fstsw ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1112
1113 {{ /* DE 000 */ _fiadd ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1114 { /* DE 001 */ _fimul ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1115 { /* DE 010 */ _ficom ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1116 { /* DE 011 */ _ficomp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1117 { /* DE 100 */ _fisub ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1118 { /* DE 101 */ _fisubr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1119 { /* DE 110 */ _fidiv ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1120 { /* DE 111 */ _fidivr ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }},
1121
1122 {{ /* DF 000 */ _fild ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1123 { /* DF 001 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1124 { /* DF 010 */ _fist ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1125 { /* DF 011 */ _fistp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1126 { /* DF 100 */ _fbld ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1127 { /* DF 101 */ _fild ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1128 { /* DF 110 */ _fbstp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC },
1129 { /* DF 111 */ _fistp ,1 ,_M ,0 ,0 ,0 ,0, DIS_COPROC }}
1130 };
1131
1132
1133 /******************************************************************************
1134 *
1135 * The Coproc2 table defines coprocessor instructions that have the second
1136 * byte in the range C0-FF
1137 *
1138 ******************************************************************************/
1139 TOpcodeData Coproc2[ 8 ][ 16 * 4 ] = {
1140 {{ /* D8 C0 */ _fadd ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1141 { /* D8 C1 */ _fadd ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1142 { /* D8 C2 */ _fadd ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1143 { /* D8 C3 */ _fadd ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1144 { /* D8 C4 */ _fadd ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1145 { /* D8 C5 */ _fadd ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1146 { /* D8 C6 */ _fadd ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1147 { /* D8 C7 */ _fadd ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1148
1149 { /* D8 C8 */ _fmul ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1150 { /* D8 C9 */ _fmul ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1151 { /* D8 CA */ _fmul ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1152 { /* D8 CB */ _fmul ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1153 { /* D8 CC */ _fmul ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1154 { /* D8 CD */ _fmul ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1155 { /* D8 CE */ _fmul ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1156 { /* D8 CF */ _fmul ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1157
1158 { /* D8 D0 */ _fcom ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1159 { /* D8 D1 */ _fcom ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1160 { /* D8 D2 */ _fcom ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1161 { /* D8 D3 */ _fcom ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1162 { /* D8 D4 */ _fcom ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1163 { /* D8 D5 */ _fcom ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1164 { /* D8 D6 */ _fcom ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1165 { /* D8 D7 */ _fcom ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1166
1167 { /* D8 D8 */ _fcomp ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1168 { /* D8 D9 */ _fcomp ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1169 { /* D8 DA */ _fcomp ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1170 { /* D8 DB */ _fcomp ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1171 { /* D8 DC */ _fcomp ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1172 { /* D8 DD */ _fcomp ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1173 { /* D8 DE */ _fcomp ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1174 { /* D8 DF */ _fcomp ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1175
1176 { /* D8 E0 */ _fsub ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1177 { /* D8 E1 */ _fsub ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1178 { /* D8 E2 */ _fsub ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1179 { /* D8 E3 */ _fsub ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1180 { /* D8 E4 */ _fsub ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1181 { /* D8 E5 */ _fsub ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1182 { /* D8 E6 */ _fsub ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1183 { /* D8 E7 */ _fsub ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1184
1185 { /* D8 E8 */ _fsubr ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1186 { /* D8 E9 */ _fsubr ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1187 { /* D8 EA */ _fsubr ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1188 { /* D8 EB */ _fsubr ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1189 { /* D8 EC */ _fsubr ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1190 { /* D8 ED */ _fsubr ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1191 { /* D8 EE */ _fsubr ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1192 { /* D8 EF */ _fsubr ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1193
1194 { /* D8 F0 */ _fdiv ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1195 { /* D8 F1 */ _fdiv ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1196 { /* D8 F2 */ _fdiv ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1197 { /* D8 F3 */ _fdiv ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1198 { /* D8 F4 */ _fdiv ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1199 { /* D8 F5 */ _fdiv ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1200 { /* D8 F6 */ _fdiv ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1201 { /* D8 F7 */ _fdiv ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1202
1203 { /* D8 F8 */ _fdivr ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1204 { /* D8 F9 */ _fdivr ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1205 { /* D8 FA */ _fdivr ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1206 { /* D8 FB */ _fdivr ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1207 { /* D8 FC */ _fdivr ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1208 { /* D8 FD */ _fdivr ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1209 { /* D8 FE */ _fdivr ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1210 { /* D8 FF */ _fdivr ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC }},
1211 /*----------------------------------------------------*/
1212 {{ /* D9 C0 */ _fld ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1213 { /* D9 C1 */ _fld ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1214 { /* D9 C2 */ _fld ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1215 { /* D9 C3 */ _fld ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1216 { /* D9 C4 */ _fld ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1217 { /* D9 C5 */ _fld ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1218 { /* D9 C6 */ _fld ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1219 { /* D9 C7 */ _fld ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1220
1221 { /* D9 C8 */ _fxch ,2 ,_ST ,_ST0,0 ,0 ,0, DIS_COPROC },
1222 { /* D9 C9 */ _fxch ,2 ,_ST ,_ST1,0 ,0 ,0, DIS_COPROC },
1223 { /* D9 CA */ _fxch ,2 ,_ST ,_ST2,0 ,0 ,0, DIS_COPROC },
1224 { /* D9 CB */ _fxch ,2 ,_ST ,_ST3,0 ,0 ,0, DIS_COPROC },
1225 { /* D9 CC */ _fxch ,2 ,_ST ,_ST4,0 ,0 ,0, DIS_COPROC },
1226 { /* D9 CD */ _fxch ,2 ,_ST ,_ST5,0 ,0 ,0, DIS_COPROC },
1227 { /* D9 CE */ _fxch ,2 ,_ST ,_ST6,0 ,0 ,0, DIS_COPROC },
1228 { /* D9 CF */ _fxch ,2 ,_ST ,_ST7,0 ,0 ,0, DIS_COPROC },
1229
1230 { /* D9 D0 */ _fnop ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1231 { /* D9 D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1232 { /* D9 D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1233 { /* D9 D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1234 { /* D9 D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1235 { /* D9 D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1236 { /* D9 D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1237 { /* D9 D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1238
1239 { /* D9 D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1240 { /* D9 D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1241 { /* D9 DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1242 { /* D9 DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1243 { /* D9 DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1244 { /* D9 DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1245 { /* D9 DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1246 { /* D9 DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1247
1248 { /* D9 E0 */ _fchs ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1249 { /* D9 E1 */ _fabs ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1250 { /* D9 E2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1251 { /* D9 E3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1252 { /* D9 E4 */ _ftst ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1253 { /* D9 E5 */ _fxam ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1254 { /* D9 E6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1255 { /* D9 E7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1256
1257 { /* D9 E8 */ _fld1 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1258 { /* D9 E9 */ _fldl2t ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1259 { /* D9 EA */ _fldl2e ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1260 { /* D9 EB */ _fldpi ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1261 { /* D9 EC */ _fldlg2 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1262 { /* D9 ED */ _fldln2 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1263 { /* D9 EE */ _fldz ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1264 { /* D9 EF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1265
1266 { /* D9 F0 */ _f2xm1 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1267 { /* D9 F1 */ _fyl2x ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1268 { /* D9 F2 */ _fptan ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1269 { /* D9 F3 */ _fpatan ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1270 { /* D9 F4 */ _fxtract ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1271 { /* D9 F5 */ _fprem1 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1272 { /* D9 F6 */ _fdecstp ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1273 { /* D9 F7 */ _fincstp ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1274
1275 { /* D9 F8 */ _fprem ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1276 { /* D9 F9 */ _fyl2xp1 ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1277 { /* D9 FA */ _fsqrt ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1278 { /* D9 FB */ _fsincos ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1279 { /* D9 FC */ _frndint ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1280 { /* D9 FD */ _fscale ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1281 { /* D9 FE */ _fsin ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1282 { /* D9 FF */ _fcos ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC }},
1283 /*----------------------------------------------------*/
1284 {{ /* DA C0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1285 { /* DA C1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1286 { /* DA C2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1287 { /* DA C3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1288 { /* DA C4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1289 { /* DA C5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1290 { /* DA C6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1291 { /* DA C7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1292
1293 { /* DA C8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1294 { /* DA C9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1295 { /* DA CA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1296 { /* DA CB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1297 { /* DA CC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1298 { /* DA CD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1299 { /* DA CE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1300 { /* DA CF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1301
1302 { /* DA D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1303 { /* DA D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1304 { /* DA D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1305 { /* DA D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1306 { /* DA D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1307 { /* DA D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1308 { /* DA D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1309 { /* DA D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1310
1311 { /* DA D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1312 { /* DA D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1313 { /* DA DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1314 { /* DA DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1315 { /* DA DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1316 { /* DA DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1317 { /* DA DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1318 { /* DA DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1319
1320 { /* DA E0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1321 { /* DA E1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1322 { /* DA E2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1323 { /* DA E3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1324 { /* DA E4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1325 { /* DA E5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1326 { /* DA E6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1327 { /* DA E7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1328
1329 { /* DA E8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1330 { /* DA E9 */ _fucompp ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1331 { /* DA EA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1332 { /* DA EB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1333 { /* DA EC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1334 { /* DA ED */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1335 { /* DA EE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1336 { /* DA EF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1337
1338 { /* DA F0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1339 { /* DA F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1340 { /* DA F2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1341 { /* DA F3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1342 { /* DA F4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1343 { /* DA F5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1344 { /* DA F6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1345 { /* DA F7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1346
1347 { /* DA F8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1348 { /* DA F9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1349 { /* DA FA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1350 { /* DA FB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1351 { /* DA FC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1352 { /* DA FD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1353 { /* DA FE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1354 { /* DA FF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1355 /*----------------------------------------------------*/
1356 {{ /* DB C0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1357 { /* DB C1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1358 { /* DB C2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1359 { /* DB C3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1360 { /* DB C4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1361 { /* DB C5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1362 { /* DB C6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1363 { /* DB C7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1364
1365 { /* DB C8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1366 { /* DB C9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1367 { /* DB CA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1368 { /* DB CB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1369 { /* DB CC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1370 { /* DB CD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1371 { /* DB CE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1372 { /* DB CF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1373
1374 { /* DB D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1375 { /* DB D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1376 { /* DB D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1377 { /* DB D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1378 { /* DB D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1379 { /* DB D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1380 { /* DB D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1381 { /* DB D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1382
1383 { /* DB D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1384 { /* DB D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1385 { /* DB DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1386 { /* DB DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1387 { /* DB DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1388 { /* DB DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1389 { /* DB DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1390 { /* DB DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1391
1392 { /* DB E0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1393 { /* DB E1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1394 { /* DB E2 */ _fclex ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1395 { /* DB E3 */ _finit ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1396 { /* DB E4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1397 { /* DB E5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1398 { /* DB E6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1399 { /* DB E7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1400
1401 { /* DB E8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1402 { /* DB E9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1403 { /* DB EA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1404 { /* DB EB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1405 { /* DB EC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1406 { /* DB ED */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1407 { /* DB EE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1408 { /* DB EF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1409
1410 { /* DB F0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1411 { /* DB F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1412 { /* DB F2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1413 { /* DB F3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1414 { /* DB F4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1415 { /* DB F5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1416 { /* DB F6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1417 { /* DB F7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1418
1419 { /* DB F8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1420 { /* DB F9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1421 { /* DB FA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1422 { /* DB FB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1423 { /* DB FC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1424 { /* DB FD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1425 { /* DB FE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1426 { /* DB FF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1427 /*----------------------------------------------------*/
1428 {{ /* DC C0 */ _fadd ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1429 { /* DC C1 */ _fadd ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1430 { /* DC C2 */ _fadd ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1431 { /* DC C3 */ _fadd ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1432 { /* DC C4 */ _fadd ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1433 { /* DC C5 */ _fadd ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1434 { /* DC C6 */ _fadd ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1435 { /* DC C7 */ _fadd ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1436
1437 { /* DC C8 */ _fmul ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1438 { /* DC C9 */ _fmul ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1439 { /* DC CA */ _fmul ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1440 { /* DC CB */ _fmul ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1441 { /* DC CC */ _fmul ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1442 { /* DC CD */ _fmul ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1443 { /* DC CE */ _fmul ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1444 { /* DC CF */ _fmul ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1445
1446 { /* DC D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1447 { /* DC D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1448 { /* DC D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1449 { /* DC D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1450 { /* DC D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1451 { /* DC D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1452 { /* DC D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1453 { /* DC D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1454
1455 { /* DC D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1456 { /* DC D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1457 { /* DC DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1458 { /* DC DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1459 { /* DC DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1460 { /* DC DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1461 { /* DC DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1462 { /* DC DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1463
1464 { /* DC E0 */ _fsubr ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1465 { /* DC E1 */ _fsubr ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1466 { /* DC E2 */ _fsubr ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1467 { /* DC E3 */ _fsubr ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1468 { /* DC E4 */ _fsubr ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1469 { /* DC E5 */ _fsubr ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1470 { /* DC E6 */ _fsubr ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1471 { /* DC E7 */ _fsubr ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1472
1473 { /* DC E8 */ _fsub ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1474 { /* DC E9 */ _fsub ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1475 { /* DC EA */ _fsub ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1476 { /* DC EB */ _fsub ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1477 { /* DC EC */ _fsub ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1478 { /* DC ED */ _fsub ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1479 { /* DC EE */ _fsub ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1480 { /* DC EF */ _fsub ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1481
1482 { /* DC F0 */ _fdivr ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1483 { /* DC F1 */ _fdivr ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1484 { /* DC F2 */ _fdivr ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1485 { /* DC F3 */ _fdivr ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1486 { /* DC F4 */ _fdivr ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1487 { /* DC F5 */ _fdivr ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1488 { /* DC F6 */ _fdivr ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1489 { /* DC F7 */ _fdivr ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1490
1491 { /* DC F8 */ _fdiv ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1492 { /* DC F9 */ _fdiv ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1493 { /* DC FA */ _fdiv ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1494 { /* DC FB */ _fdiv ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1495 { /* DC FC */ _fdiv ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1496 { /* DC FD */ _fdiv ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1497 { /* DC FE */ _fdiv ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1498 { /* DC FF */ _fdiv ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC }},
1499 /*----------------------------------------------------*/
1500 {{ /* DD C0 */ _ffree ,1 ,_ST0,0 ,0 ,0 ,0, DIS_COPROC },
1501 { /* DD C1 */ _ffree ,1 ,_ST1,0 ,0 ,0 ,0, DIS_COPROC },
1502 { /* DD C2 */ _ffree ,1 ,_ST2,0 ,0 ,0 ,0, DIS_COPROC },
1503 { /* DD C3 */ _ffree ,1 ,_ST3,0 ,0 ,0 ,0, DIS_COPROC },
1504 { /* DD C4 */ _ffree ,1 ,_ST4,0 ,0 ,0 ,0, DIS_COPROC },
1505 { /* DD C5 */ _ffree ,1 ,_ST5,0 ,0 ,0 ,0, DIS_COPROC },
1506 { /* DD C6 */ _ffree ,1 ,_ST6,0 ,0 ,0 ,0, DIS_COPROC },
1507 { /* DD C7 */ _ffree ,1 ,_ST7,0 ,0 ,0 ,0, DIS_COPROC },
1508
1509 { /* DD C8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1510 { /* DD C9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1511 { /* DD CA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1512 { /* DD CB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1513 { /* DD CC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1514 { /* DD CD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1515 { /* DD CE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1516 { /* DD CF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1517
1518 { /* DD D0 */ _fst ,1 ,_ST0,0 ,0 ,0 ,0, DIS_COPROC },
1519 { /* DD D1 */ _fst ,1 ,_ST1,0 ,0 ,0 ,0, DIS_COPROC },
1520 { /* DD D2 */ _fst ,1 ,_ST2,0 ,0 ,0 ,0, DIS_COPROC },
1521 { /* DD D3 */ _fst ,1 ,_ST3,0 ,0 ,0 ,0, DIS_COPROC },
1522 { /* DD D4 */ _fst ,1 ,_ST4,0 ,0 ,0 ,0, DIS_COPROC },
1523 { /* DD D5 */ _fst ,1 ,_ST5,0 ,0 ,0 ,0, DIS_COPROC },
1524 { /* DD D6 */ _fst ,1 ,_ST6,0 ,0 ,0 ,0, DIS_COPROC },
1525 { /* DD D7 */ _fst ,1 ,_ST7,0 ,0 ,0 ,0, DIS_COPROC },
1526
1527 { /* DD D8 */ _fstp ,1 ,_ST0,0 ,0 ,0 ,0, DIS_COPROC },
1528 { /* DD D9 */ _fstp ,1 ,_ST1,0 ,0 ,0 ,0, DIS_COPROC },
1529 { /* DD DA */ _fstp ,1 ,_ST2,0 ,0 ,0 ,0, DIS_COPROC },
1530 { /* DD DB */ _fstp ,1 ,_ST3,0 ,0 ,0 ,0, DIS_COPROC },
1531 { /* DD DC */ _fstp ,1 ,_ST4,0 ,0 ,0 ,0, DIS_COPROC },
1532 { /* DD DD */ _fstp ,1 ,_ST5,0 ,0 ,0 ,0, DIS_COPROC },
1533 { /* DD DE */ _fstp ,1 ,_ST6,0 ,0 ,0 ,0, DIS_COPROC },
1534 { /* DD DF */ _fstp ,1 ,_ST7,0 ,0 ,0 ,0, DIS_COPROC },
1535
1536 { /* DD E0 */ _fucom ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1537 { /* DD E1 */ _fucom ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1538 { /* DD E2 */ _fucom ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1539 { /* DD E3 */ _fucom ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1540 { /* DD E4 */ _fucom ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1541 { /* DD E5 */ _fucom ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1542 { /* DD E6 */ _fucom ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1543 { /* DD E7 */ _fucom ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1544
1545 { /* DD E8 */ _fucomp ,1 ,_ST0,0 ,0 ,0 ,0, DIS_COPROC },
1546 { /* DD E9 */ _fucomp ,1 ,_ST1,0 ,0 ,0 ,0, DIS_COPROC },
1547 { /* DD EA */ _fucomp ,1 ,_ST2,0 ,0 ,0 ,0, DIS_COPROC },
1548 { /* DD EB */ _fucomp ,1 ,_ST3,0 ,0 ,0 ,0, DIS_COPROC },
1549 { /* DD EC */ _fucomp ,1 ,_ST4,0 ,0 ,0 ,0, DIS_COPROC },
1550 { /* DD ED */ _fucomp ,1 ,_ST5,0 ,0 ,0 ,0, DIS_COPROC },
1551 { /* DD EE */ _fucomp ,1 ,_ST6,0 ,0 ,0 ,0, DIS_COPROC },
1552 { /* DD EF */ _fucomp ,1 ,_ST7,0 ,0 ,0 ,0, DIS_COPROC },
1553
1554 { /* DD F0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1555 { /* DD F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1556 { /* DD F2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1557 { /* DD F3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1558 { /* DD F4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1559 { /* DD F5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1560 { /* DD F6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1561 { /* DD F7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1562
1563 { /* DD F8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1564 { /* DD F9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1565 { /* DD FA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1566 { /* DD FB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1567 { /* DD FC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1568 { /* DD FD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1569 { /* DD FE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1570 { /* DD FF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }},
1571 /*----------------------------------------------------*/
1572 {{ /* DE C0 */ _faddp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1573 { /* DE C1 */ _faddp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1574 { /* DE C2 */ _faddp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1575 { /* DE C3 */ _faddp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1576 { /* DE C4 */ _faddp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1577 { /* DE C5 */ _faddp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1578 { /* DE C6 */ _faddp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1579 { /* DE C7 */ _faddp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1580
1581 { /* DE C8 */ _fmulp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1582 { /* DE C9 */ _fmulp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1583 { /* DE CA */ _fmulp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1584 { /* DE CB */ _fmulp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1585 { /* DE CC */ _fmulp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1586 { /* DE CD */ _fmulp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1587 { /* DE CE */ _fmulp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1588 { /* DE CF */ _fmulp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1589
1590 { /* DE D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1591 { /* DE D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1592 { /* DE D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1593 { /* DE D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1594 { /* DE D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1595 { /* DE D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1596 { /* DE D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1597 { /* DE D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1598
1599 { /* DE D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1600 { /* DE D9 */ _fcompp ,0 ,0 ,0 ,0 ,0 ,0, DIS_COPROC },
1601 { /* DE DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1602 { /* DE DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1603 { /* DE DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1604 { /* DE DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1605 { /* DE DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1606 { /* DE DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1607
1608 { /* DE E0 */ _fsubrp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1609 { /* DE E1 */ _fsubrp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1610 { /* DE E2 */ _fsubrp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1611 { /* DE E3 */ _fsubrp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1612 { /* DE E4 */ _fsubrp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1613 { /* DE E5 */ _fsubrp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1614 { /* DE E6 */ _fsubrp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1615 { /* DE E7 */ _fsubrp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1616
1617 { /* DE E8 */ _fsubp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1618 { /* DE E9 */ _fsubp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1619 { /* DE EA */ _fsubp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1620 { /* DE EB */ _fsubp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1621 { /* DE EC */ _fsubp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1622 { /* DE ED */ _fsubp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1623 { /* DE EE */ _fsubp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1624 { /* DE EF */ _fsubp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1625
1626 { /* DE F0 */ _fdivrp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1627 { /* DE F1 */ _fdivrp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1628 { /* DE F2 */ _fdivrp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1629 { /* DE F3 */ _fdivrp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1630 { /* DE F4 */ _fdivrp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1631 { /* DE F5 */ _fdivrp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1632 { /* DE F6 */ _fdivrp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1633 { /* DE F7 */ _fdivrp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC },
1634
1635 { /* DE F8 */ _fdivp ,2 ,_ST0,_ST ,0 ,0 ,0, DIS_COPROC },
1636 { /* DE F9 */ _fdivp ,2 ,_ST1,_ST ,0 ,0 ,0, DIS_COPROC },
1637 { /* DE FA */ _fdivp ,2 ,_ST2,_ST ,0 ,0 ,0, DIS_COPROC },
1638 { /* DE FB */ _fdivp ,2 ,_ST3,_ST ,0 ,0 ,0, DIS_COPROC },
1639 { /* DE FC */ _fdivp ,2 ,_ST4,_ST ,0 ,0 ,0, DIS_COPROC },
1640 { /* DE FD */ _fdivp ,2 ,_ST5,_ST ,0 ,0 ,0, DIS_COPROC },
1641 { /* DE FE */ _fdivp ,2 ,_ST6,_ST ,0 ,0 ,0, DIS_COPROC },
1642 { /* DE FF */ _fdivp ,2 ,_ST7,_ST ,0 ,0 ,0, DIS_COPROC }},
1643 /*----------------------------------------------------*/
1644 {{ /* DF C0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1645 { /* DF C1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1646 { /* DF C2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1647 { /* DF C3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1648 { /* DF C4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1649 { /* DF C5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1650 { /* DF C6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1651 { /* DF C7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1652
1653 { /* DF C8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1654 { /* DF C9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1655 { /* DF CA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1656 { /* DF CB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1657 { /* DF CC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1658 { /* DF CD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1659 { /* DF CE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1660 { /* DF CF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1661
1662 { /* DF D0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1663 { /* DF D1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1664 { /* DF D2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1665 { /* DF D3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1666 { /* DF D4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1667 { /* DF D5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1668 { /* DF D6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1669 { /* DF D7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1670
1671 { /* DF D8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1672 { /* DF D9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1673 { /* DF DA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1674 { /* DF DB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1675 { /* DF DC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1676 { /* DF DD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1677 { /* DF DE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1678 { /* DF DF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1679
1680 { /* DF E0 */ _fstsw ,1 ,_AX ,0 ,0 ,0 ,0, DIS_COPROC },
1681 { /* DF E1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1682 { /* DF E2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1683 { /* DF E3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1684 { /* DF E4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1685 { /* DF E5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1686 { /* DF E6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1687 { /* DF E7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1688
1689 { /* DF E8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1690 { /* DF E9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1691 { /* DF EA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1692 { /* DF EB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1693 { /* DF EC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1694 { /* DF ED */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1695 { /* DF EE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1696 { /* DF EF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1697
1698 { /* DF F0 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1699 { /* DF F1 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1700 { /* DF F2 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1701 { /* DF F3 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1702 { /* DF F4 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1703 { /* DF F5 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1704 { /* DF F6 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1705 { /* DF F7 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1706
1707 { /* DF F8 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1708 { /* DF F9 */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1709 { /* DF FA */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1710 { /* DF FB */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1711 { /* DF FC */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1712 { /* DF FD */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1713 { /* DF FE */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL },
1714 { /* DF FF */ _NDEF ,0 ,0 ,0 ,0 ,0 ,0, DIS_SPECIAL }}
1715 };
1716
1717 /******************************************************************************
1718 *
1719 * Generic messages used by the disassembler
1720 *
1721 ******************************************************************************/
1722 char *sBytePtr = "BYTE PTR ";
1723 char *sWordPtr = "WORD PTR ";
1724 char *sDwordPtr = "DWORD PTR ";
1725 char *sFwordPtr = "FWORD PTR ";
1726 char *sQwordPtr = "QWORD PTR ";
1727
1728 /******************************************************************************
1729 *
1730 * Different register messages used by the disassembler
1731 *
1732 ******************************************************************************/
1733 char *sGenReg16_32[ 2 ][ 8 ] = {
1734 { "AX","CX","DX","BX","SP","BP","SI","DI" },
1735 { "EAX","ECX","EDX","EBX","ESP","EBP","ESI","EDI" }
1736 };
1737
1738 char *sSeg[ 8 ] = {
1739 "ES","CS","SS","DS","FS","GS","?","?"
1740 };
1741
1742 char *sSegOverride[ 8 ] = {
1743 "", "ES:","CS:","SS:","DS:","FS:","GS:","?:"
1744 };
1745
1746 char *sSegOverrideDefaultES[ 8 ] = {
1747 "ES:", "ES:","CS:","SS:","DS:","FS:","GS:","?:"
1748 };
1749
1750 char *sSegOverrideDefaultDS[ 8 ] = {
1751 "DS:", "ES:","CS:","SS:","DS:","FS:","GS:","?:"
1752 };
1753
1754 char *sScale[ 4 ] = {
1755 "", "2*", "4*", "8*"
1756 };
1757
1758 char *sAdr1[ 2 ][ 8 ] = {
1759 { "BX+SI","BX+DI","BP+SI","BP+DI","SI","DI","BP","BX" },
1760 { "EAX","ECX","EDX","EBX","?","EBP","ESI","EDI" }
1761 };
1762
1763 char *sRegs1[ 2 ][ 2 ][ 8 ] = {
1764 {{ "AL","CL","DL","BL","AH","CH","DH","BH" },
1765 { "AX","CX","DX","BX","SP","BP","SI","DI" } },
1766 {{ "AL","CL","DL","BL","AH","CH","DH","BH" },
1767 { "EAX","ECX","EDX","EBX","ESP","EBP","ESI","EDI" } }
1768 };
1769
1770 char *sRegs2[] = {
1771 "DX", "AL", "AH", "BL", "BH", "CL", "CH", "DL", "DH", "CS", "DS", "ES", "SS", "FS", "GS"
1772 };
1773
1774 char *sControl[ 8 ] = {
1775 "CR0","CR1","CR2","CR3","CR4","?","?","?"
1776 };
1777
1778 char *sDebug[ 8 ] = {
1779 "DR0","DR1","DR2","DR3","DR4","DR5","DR6","DR7"
1780 };
1781
1782 char *sTest[ 8 ] = {
1783 "?","?","?","?","?","?","TR6","TR7"
1784 };
1785
1786 char *sYptr[ 2 ] = {
1787 "[DI]", "[EDI]"
1788 };
1789
1790 char *sXptr[ 2 ] = {
1791 "[SI]", "[ESI]"
1792 };
1793
1794 char *sRep[ 4 ] = {
1795 "", "REP ", "REPNZ ", "?"
1796 };
1797
1798 char *sST[ 9 ] = {
1799 "ST(0)","ST(1)","ST(2)","ST(3)","ST(4)","ST(5)","ST(6)","ST(7)","ST"
1800 };
1801
1802