Reorganize 3-byte opcode tables - bigger tables but easier to maintain them
This commit is contained in:
parent
5813db0bad
commit
405fcfd75d
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.428 2008-02-15 22:05:40 sshwarts Exp $
|
||||
// $Id: cpu.h,v 1.429 2008-02-29 03:02:02 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -183,9 +183,14 @@
|
||||
#define BX_READ_8BIT_REGx(index,ext) BX_READ_8BIT_REG(index)
|
||||
#endif
|
||||
|
||||
#define BX_READ_8BIT_REGH(index) (BX_CPU_THIS_PTR gen_reg[index].word.byte.rh)
|
||||
#define BX_READ_16BIT_REG(index) (BX_CPU_THIS_PTR gen_reg[index].word.rx)
|
||||
#define BX_READ_32BIT_REG(index) (BX_CPU_THIS_PTR gen_reg[index].dword.erx)
|
||||
|
||||
#define BX_WRITE_8BIT_REGH(index, val) {\
|
||||
BX_CPU_THIS_PTR gen_reg[index].word.byte.rh = val; \
|
||||
}
|
||||
|
||||
#define BX_WRITE_16BIT_REG(index, val) {\
|
||||
BX_CPU_THIS_PTR gen_reg[index].word.rx = val; \
|
||||
}
|
||||
@ -3575,13 +3580,12 @@ IMPLEMENT_EFLAG_ACCESSOR (TF, 8)
|
||||
#define BxPrefixSSE 0x0020 // Group encoding: 010
|
||||
#define BxFPEscape 0x0030 // Group encoding: 011
|
||||
#define BxRMGroup 0x0040 // Group encoding: 100
|
||||
#define Bx3ByteOpIndex 0x0050 // Group encoding: 101
|
||||
#define Bx3ByteOpTable 0x0060 // Group encoding: 110
|
||||
#define Bx3ByteOp 0x0050 // Group encoding: 101
|
||||
// Group encoding: 110
|
||||
// Group encoding: 111
|
||||
|
||||
#define BxLockable 0x0080 // bit 7
|
||||
#define Bx3ByteOpcode 0x0100 // bit 8
|
||||
#define BxRepeatable 0x0200 // bit 9
|
||||
#define BxRepeatable 0x0100 // bit 8
|
||||
|
||||
#if BX_SUPPORT_TRACE_CACHE
|
||||
#define BxTraceEnd 0x1000 // bit 12
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: data_xfer8.cc,v 1.37 2008-01-29 17:13:06 sshwarts Exp $
|
||||
// $Id: data_xfer8.cc,v 1.38 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -37,7 +37,7 @@ void BX_CPU_C::MOV_RLIb(bxInstruction_c *i)
|
||||
|
||||
void BX_CPU_C::MOV_RHIb(bxInstruction_c *i)
|
||||
{
|
||||
BX_CPU_THIS_PTR gen_reg[i->b1() & 0x03].word.byte.rh = i->Ib();
|
||||
BX_WRITE_8BIT_REGH(i->b1() & 0x03, i->Ib());
|
||||
}
|
||||
|
||||
void BX_CPU_C::MOV_EbGbM(bxInstruction_c *i)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode.cc,v 1.167 2008-02-15 12:23:47 sshwarts Exp $
|
||||
// $Id: fetchdecode.cc,v 1.168 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -533,13 +533,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = {
|
||||
/* 0F 36 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /wr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /wr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /wr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -1096,13 +1096,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = {
|
||||
/* 0F 36 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /dr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /dr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /dr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -1666,13 +1666,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = {
|
||||
/* 0F 36 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /wm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /wm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /wm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -2229,13 +2229,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = {
|
||||
/* 0F 36 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /dm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /dm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /dm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -2569,7 +2569,7 @@ fetch_b1:
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
unsigned b3 = 0;
|
||||
// handle 3-byte escape
|
||||
if (attr & Bx3ByteOpcode) {
|
||||
if (attr & Bx3ByteOp) {
|
||||
if (ilen < remain) {
|
||||
ilen++;
|
||||
b3 = *iptr++;
|
||||
@ -2746,11 +2746,8 @@ modrm_done:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[rm]);
|
||||
break;
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
case Bx3ByteOpTable:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3 >> 4]);
|
||||
break;
|
||||
case Bx3ByteOpIndex:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3 & 15]);
|
||||
case Bx3ByteOp:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3]);
|
||||
break;
|
||||
#endif
|
||||
case BxPrefixSSE:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode.h,v 1.53 2008-02-12 22:41:39 sshwarts Exp $
|
||||
// $Id: fetchdecode.h,v 1.54 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005 Stanislav Shwartsman
|
||||
@ -2370,7 +2370,7 @@ static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a63[4] = {
|
||||
/* ************************************************************************ */
|
||||
/* 3-byte opcode table (Table A-4, 0F 38) */
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f380x[16] = {
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteTable0f38[256] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3800 },
|
||||
/* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3801 },
|
||||
/* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3802 },
|
||||
@ -2386,127 +2386,253 @@ static const BxOpcodeInfo_t BxOpcode3ByteOp0f380x[16] = {
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f381x[16] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3810 },
|
||||
/* 01 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 02 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3814 },
|
||||
/* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3815 },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3817 },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381c },
|
||||
/* 0D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381d },
|
||||
/* 0E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381e },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f382x[16] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3820 },
|
||||
/* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3821 },
|
||||
/* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3822 },
|
||||
/* 03 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3823 },
|
||||
/* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3824 },
|
||||
/* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3825 },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3828 },
|
||||
/* 09 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3829 },
|
||||
/* 0A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382a },
|
||||
/* 0B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382b },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f383x[16] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3830 },
|
||||
/* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3831 },
|
||||
/* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3832 },
|
||||
/* 03 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3833 },
|
||||
/* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3834 },
|
||||
/* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3835 },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3837 },
|
||||
/* 08 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3838 },
|
||||
/* 09 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3839 },
|
||||
/* 0A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383a },
|
||||
/* 0B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383b },
|
||||
/* 0C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383c },
|
||||
/* 0D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383d },
|
||||
/* 0E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383e },
|
||||
/* 0F */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383f }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f384x[16] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3840 },
|
||||
/* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3841 },
|
||||
/* 02 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f38fx[16] = {
|
||||
/* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f38f0 },
|
||||
/* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f38f1 },
|
||||
/* 02 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteTableA4[16] = {
|
||||
/* 00 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f380x },
|
||||
/* 01 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f381x },
|
||||
/* 02 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f382x },
|
||||
/* 03 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f383x },
|
||||
/* 04 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f384x },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f38fx }
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 10 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3810 },
|
||||
/* 11 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 12 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 13 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 14 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3814 },
|
||||
/* 15 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3815 },
|
||||
/* 16 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 17 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3817 },
|
||||
/* 18 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 19 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381c },
|
||||
/* 1D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381d },
|
||||
/* 1E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381e },
|
||||
/* 1F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 20 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3820 },
|
||||
/* 21 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3821 },
|
||||
/* 22 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3822 },
|
||||
/* 23 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3823 },
|
||||
/* 24 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3824 },
|
||||
/* 25 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3825 },
|
||||
/* 26 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 27 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 28 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3828 },
|
||||
/* 29 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3829 },
|
||||
/* 2A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382a },
|
||||
/* 2B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382b },
|
||||
/* 2C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 30 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3830 },
|
||||
/* 31 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3831 },
|
||||
/* 32 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3832 },
|
||||
/* 33 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3833 },
|
||||
/* 34 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3834 },
|
||||
/* 35 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3835 },
|
||||
/* 36 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 37 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3837 },
|
||||
/* 38 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3838 },
|
||||
/* 39 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3839 },
|
||||
/* 3A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383a },
|
||||
/* 3B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383b },
|
||||
/* 3C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383c },
|
||||
/* 3D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383d },
|
||||
/* 3E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383e },
|
||||
/* 3F */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383f },
|
||||
/* 40 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3840 },
|
||||
/* 41 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3841 },
|
||||
/* 42 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 43 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 44 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 45 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 46 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 47 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 48 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 49 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 50 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 51 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 52 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 53 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 54 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 55 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 56 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 57 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 58 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 59 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 60 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 61 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 62 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 63 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 64 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 65 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 66 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 67 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 68 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 69 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 70 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 71 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 72 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 73 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 74 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 75 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 76 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 77 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 78 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 79 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 80 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 81 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 82 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 83 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 84 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 85 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 86 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 87 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 88 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 89 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 90 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 91 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 92 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 93 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 94 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 95 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 96 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 97 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 98 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 99 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9F */ { 0, &BX_CPU_C::BxError },
|
||||
/* A0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* AA */ { 0, &BX_CPU_C::BxError },
|
||||
/* AB */ { 0, &BX_CPU_C::BxError },
|
||||
/* AC */ { 0, &BX_CPU_C::BxError },
|
||||
/* AD */ { 0, &BX_CPU_C::BxError },
|
||||
/* AE */ { 0, &BX_CPU_C::BxError },
|
||||
/* AF */ { 0, &BX_CPU_C::BxError },
|
||||
/* B0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* BA */ { 0, &BX_CPU_C::BxError },
|
||||
/* BB */ { 0, &BX_CPU_C::BxError },
|
||||
/* BC */ { 0, &BX_CPU_C::BxError },
|
||||
/* BD */ { 0, &BX_CPU_C::BxError },
|
||||
/* BE */ { 0, &BX_CPU_C::BxError },
|
||||
/* BF */ { 0, &BX_CPU_C::BxError },
|
||||
/* C0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* CA */ { 0, &BX_CPU_C::BxError },
|
||||
/* CB */ { 0, &BX_CPU_C::BxError },
|
||||
/* CC */ { 0, &BX_CPU_C::BxError },
|
||||
/* CD */ { 0, &BX_CPU_C::BxError },
|
||||
/* CE */ { 0, &BX_CPU_C::BxError },
|
||||
/* CF */ { 0, &BX_CPU_C::BxError },
|
||||
/* D0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* DA */ { 0, &BX_CPU_C::BxError },
|
||||
/* DB */ { 0, &BX_CPU_C::BxError },
|
||||
/* DC */ { 0, &BX_CPU_C::BxError },
|
||||
/* DD */ { 0, &BX_CPU_C::BxError },
|
||||
/* DE */ { 0, &BX_CPU_C::BxError },
|
||||
/* DF */ { 0, &BX_CPU_C::BxError },
|
||||
/* E0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* EA */ { 0, &BX_CPU_C::BxError },
|
||||
/* EB */ { 0, &BX_CPU_C::BxError },
|
||||
/* EC */ { 0, &BX_CPU_C::BxError },
|
||||
/* ED */ { 0, &BX_CPU_C::BxError },
|
||||
/* EE */ { 0, &BX_CPU_C::BxError },
|
||||
/* EF */ { 0, &BX_CPU_C::BxError },
|
||||
/* F0 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f38f0 },
|
||||
/* F1 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f38f1 },
|
||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* FA */ { 0, &BX_CPU_C::BxError },
|
||||
/* FB */ { 0, &BX_CPU_C::BxError },
|
||||
/* FC */ { 0, &BX_CPU_C::BxError },
|
||||
/* FD */ { 0, &BX_CPU_C::BxError },
|
||||
/* FE */ { 0, &BX_CPU_C::BxError },
|
||||
/* FF */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
/* ************************************************************************ */
|
||||
/* 3-byte opcode table (Table A-5, 0F 3A) */
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a0x[16] = {
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* 00 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 01 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 02 */ { 0, &BX_CPU_C::BxError },
|
||||
@ -2522,102 +2648,247 @@ static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a0x[16] = {
|
||||
/* 0C */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0c },
|
||||
/* 0D */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0d },
|
||||
/* 0E */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0e },
|
||||
/* 0F */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0f }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a1x[16] = {
|
||||
/* 00 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 01 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 02 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a14 },
|
||||
/* 05 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a15 },
|
||||
/* 06 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a16 },
|
||||
/* 07 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a17 },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a2x[16] = {
|
||||
/* 00 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a20 },
|
||||
/* 01 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a21 },
|
||||
/* 02 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a22 },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a4x[16] = {
|
||||
/* 00 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a40 },
|
||||
/* 01 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a41 },
|
||||
/* 02 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a42 },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a6x[16] = {
|
||||
/* 00 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a60 },
|
||||
/* 01 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a61 },
|
||||
/* 02 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a62 },
|
||||
/* 03 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a63 },
|
||||
/* 04 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcode3ByteTableA5[16] = {
|
||||
/* 00 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a0x },
|
||||
/* 01 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a1x },
|
||||
/* 02 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a2x },
|
||||
/* 03 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 04 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a4x },
|
||||
/* 05 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 06 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a6x },
|
||||
/* 07 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 08 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 09 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F */ { 0, &BX_CPU_C::BxError }
|
||||
/* 0F */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0f },
|
||||
/* 10 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 11 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 12 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 13 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 14 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a14 },
|
||||
/* 15 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a15 },
|
||||
/* 16 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a16 },
|
||||
/* 17 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a17 },
|
||||
/* 18 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 19 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 1F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 20 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a20 },
|
||||
/* 21 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a21 },
|
||||
/* 22 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a22 },
|
||||
/* 23 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 24 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 25 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 26 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 27 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 28 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 29 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 2F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 30 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 31 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 32 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 33 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 34 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 35 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 36 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 37 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 38 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 39 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 3F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 40 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a40 },
|
||||
/* 41 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a41 },
|
||||
/* 42 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a42 },
|
||||
/* 43 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 44 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 45 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 46 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 47 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 48 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 49 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 4F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 50 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 51 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 52 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 53 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 54 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 55 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 56 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 57 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 58 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 59 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 5F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 60 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a60 },
|
||||
/* 61 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a61 },
|
||||
/* 62 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a62 },
|
||||
/* 63 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a63 },
|
||||
/* 64 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 65 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 66 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 67 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 68 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 69 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 70 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 71 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 72 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 73 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 74 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 75 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 76 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 77 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 78 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 79 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 7F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 80 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 81 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 82 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 83 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 84 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 85 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 86 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 87 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 88 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 89 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 8F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 90 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 91 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 92 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 93 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 94 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 95 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 96 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 97 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 98 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 99 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9A */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9B */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9C */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 9F */ { 0, &BX_CPU_C::BxError },
|
||||
/* A0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* A9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* AA */ { 0, &BX_CPU_C::BxError },
|
||||
/* AB */ { 0, &BX_CPU_C::BxError },
|
||||
/* AC */ { 0, &BX_CPU_C::BxError },
|
||||
/* AD */ { 0, &BX_CPU_C::BxError },
|
||||
/* AE */ { 0, &BX_CPU_C::BxError },
|
||||
/* AF */ { 0, &BX_CPU_C::BxError },
|
||||
/* B0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* B9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* BA */ { 0, &BX_CPU_C::BxError },
|
||||
/* BB */ { 0, &BX_CPU_C::BxError },
|
||||
/* BC */ { 0, &BX_CPU_C::BxError },
|
||||
/* BD */ { 0, &BX_CPU_C::BxError },
|
||||
/* BE */ { 0, &BX_CPU_C::BxError },
|
||||
/* BF */ { 0, &BX_CPU_C::BxError },
|
||||
/* C0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* C9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* CA */ { 0, &BX_CPU_C::BxError },
|
||||
/* CB */ { 0, &BX_CPU_C::BxError },
|
||||
/* CC */ { 0, &BX_CPU_C::BxError },
|
||||
/* CD */ { 0, &BX_CPU_C::BxError },
|
||||
/* CE */ { 0, &BX_CPU_C::BxError },
|
||||
/* CF */ { 0, &BX_CPU_C::BxError },
|
||||
/* D0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* D9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* DA */ { 0, &BX_CPU_C::BxError },
|
||||
/* DB */ { 0, &BX_CPU_C::BxError },
|
||||
/* DC */ { 0, &BX_CPU_C::BxError },
|
||||
/* DD */ { 0, &BX_CPU_C::BxError },
|
||||
/* DE */ { 0, &BX_CPU_C::BxError },
|
||||
/* DF */ { 0, &BX_CPU_C::BxError },
|
||||
/* E0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* E9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* EA */ { 0, &BX_CPU_C::BxError },
|
||||
/* EB */ { 0, &BX_CPU_C::BxError },
|
||||
/* EC */ { 0, &BX_CPU_C::BxError },
|
||||
/* ED */ { 0, &BX_CPU_C::BxError },
|
||||
/* EE */ { 0, &BX_CPU_C::BxError },
|
||||
/* EF */ { 0, &BX_CPU_C::BxError },
|
||||
/* F0 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F1 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F3 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F4 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F6 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F7 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F8 */ { 0, &BX_CPU_C::BxError },
|
||||
/* F9 */ { 0, &BX_CPU_C::BxError },
|
||||
/* FA */ { 0, &BX_CPU_C::BxError },
|
||||
/* FB */ { 0, &BX_CPU_C::BxError },
|
||||
/* FC */ { 0, &BX_CPU_C::BxError },
|
||||
/* FD */ { 0, &BX_CPU_C::BxError },
|
||||
/* FE */ { 0, &BX_CPU_C::BxError },
|
||||
/* FF */ { 0, &BX_CPU_C::BxError }
|
||||
};
|
||||
|
||||
#endif // BX_SUPPORT_SSE >= 4 || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode64.cc,v 1.174 2008-02-15 19:03:53 sshwarts Exp $
|
||||
// $Id: fetchdecode64.cc,v 1.175 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -498,13 +498,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
/* 0F 36 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /wr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /wr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /wr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -1026,13 +1026,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
/* 0F 36 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /dr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /dr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /dr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -1554,13 +1554,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
/* 0F 36 /qr */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /qr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /qr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /qr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /qr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /qr */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /qr */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /qr */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /qr */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -2088,13 +2088,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
/* 0F 36 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /wm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /wm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /wm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -2616,13 +2616,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
/* 0F 36 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /dm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /dm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /dm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -3144,13 +3144,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
/* 0F 36 /qm */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 37 /qm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 38 /qm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape
|
||||
/* 0F 38 /qm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f38 }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 38 /qm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
/* 0F 39 /qm */ { 0, &BX_CPU_C::BxError },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /qm */ { Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape
|
||||
/* 0F 3A /qm */ { Bx3ByteOp, NULL, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /qm */ { 0, &BX_CPU_C::BxError },
|
||||
#endif
|
||||
@ -3505,7 +3505,7 @@ fetch_b1:
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
unsigned b3 = 0;
|
||||
// handle 3-byte escape
|
||||
if (attr & Bx3ByteOpcode) {
|
||||
if (attr & Bx3ByteOp) {
|
||||
if (ilen < remain) {
|
||||
ilen++;
|
||||
b3 = *iptr++;
|
||||
@ -3709,11 +3709,8 @@ modrm_done:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[rm & 0x7]);
|
||||
break;
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
case Bx3ByteOpTable:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3 >> 4]);
|
||||
break;
|
||||
case Bx3ByteOpIndex:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3 & 15]);
|
||||
case Bx3ByteOp:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b3]);
|
||||
break;
|
||||
#endif
|
||||
case BxPrefixSSE:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: dis_decode.cc,v 1.43 2008-02-05 22:33:33 sshwarts Exp $
|
||||
// $Id: dis_decode.cc,v 1.44 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <stdio.h>
|
||||
@ -205,7 +205,7 @@ x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_
|
||||
entry = opcode_table + insn.b1;
|
||||
|
||||
// will require 3rd byte for 3-byte opcode
|
||||
if (entry->Attr & _GRP3BTAB) b3 = fetch_byte();
|
||||
if (entry->Attr & _GRP3BOP) b3 = fetch_byte();
|
||||
|
||||
if (instruction_has_modrm[insn.b1])
|
||||
{
|
||||
@ -249,12 +249,8 @@ x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_
|
||||
entry = &(BxDisasm3DNowGroup[peek_byte()]);
|
||||
break;
|
||||
|
||||
case _GRP3BTAB:
|
||||
entry = &(OPCODE_TABLE(entry)[b3 >> 4]);
|
||||
break;
|
||||
|
||||
case _GRP3BOP:
|
||||
entry = &(OPCODE_TABLE(entry)[b3 & 15]);
|
||||
entry = &(OPCODE_TABLE(entry)[b3]);
|
||||
break;
|
||||
|
||||
case _GRP64B:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: dis_tables.h,v 1.33 2008-02-12 22:41:39 sshwarts Exp $
|
||||
// $Id: dis_tables.h,v 1.34 2008-02-29 03:02:03 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _BX_DISASM_TABLES_
|
||||
@ -13,8 +13,7 @@
|
||||
#define _GRPSSE 5
|
||||
#define _GRPRM 6
|
||||
#define _GRP3BOP 7
|
||||
#define _GRP3BTAB 8
|
||||
#define _GRP64B 9
|
||||
#define _GRP64B 8
|
||||
|
||||
/* ************************************************************************ */
|
||||
#define GRPSSE(n) _GRPSSE, BxDisasmGroupSSE_##n
|
||||
@ -23,8 +22,7 @@
|
||||
#define GRPMOD(n) _SPLIT11B, BxDisasmGroupMod##n
|
||||
#define GRPFP(n) _GRPFP, BxDisasmFPGroup##n
|
||||
#define GRP3DNOW _GRP3DNOW, BxDisasm3DNowGroup
|
||||
#define GR3BOP(n) _GRP3BOP, BxDisasm3ByteOp##n
|
||||
#define GR3BTAB(n) _GRP3BTAB, BxDisasm3ByteTable##n
|
||||
#define GR3BTAB(n) _GRP3BOP, BxDisasm3ByteOpTable##n
|
||||
#define GR64BIT(n) _GRP64B, BxDisasmGrpOs64B_##n
|
||||
/* ************************************************************************ */
|
||||
|
||||
|
@ -2914,7 +2914,7 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodeInfoFP[512] = {
|
||||
/* ************************************************************************ */
|
||||
/* 3-byte opcode table (Table A-4, 0F 38) */
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f380x[16] = {
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
|
||||
/* 00 */ { GRPSSE(0f3800) },
|
||||
/* 01 */ { GRPSSE(0f3801) },
|
||||
/* 02 */ { GRPSSE(0f3802) },
|
||||
@ -2930,127 +2930,252 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f380x[16] = {
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f381x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3810) },
|
||||
/* 01 */ { 0, &Ia_Invalid },
|
||||
/* 02 */ { 0, &Ia_Invalid },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { GRPSSE(0f3814) },
|
||||
/* 05 */ { GRPSSE(0f3815) },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { GRPSSE(0f3817) },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { GRPSSE(0f381c) },
|
||||
/* 0D */ { GRPSSE(0f381d) },
|
||||
/* 0E */ { GRPSSE(0f381e) },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f382x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3820) },
|
||||
/* 01 */ { GRPSSE(0f3821) },
|
||||
/* 02 */ { GRPSSE(0f3822) },
|
||||
/* 03 */ { GRPSSE(0f3823) },
|
||||
/* 04 */ { GRPSSE(0f3824) },
|
||||
/* 05 */ { GRPSSE(0f3825) },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { GRPSSE(0f3828) },
|
||||
/* 09 */ { GRPSSE(0f3829) },
|
||||
/* 0A */ { GRPSSE(0f382a) },
|
||||
/* 0B */ { GRPSSE(0f382b) },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f383x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3830) },
|
||||
/* 01 */ { GRPSSE(0f3831) },
|
||||
/* 02 */ { GRPSSE(0f3832) },
|
||||
/* 03 */ { GRPSSE(0f3833) },
|
||||
/* 04 */ { GRPSSE(0f3834) },
|
||||
/* 05 */ { GRPSSE(0f3835) },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { GRPSSE(0f3837) },
|
||||
/* 08 */ { GRPSSE(0f3838) },
|
||||
/* 09 */ { GRPSSE(0f3839) },
|
||||
/* 0A */ { GRPSSE(0f383a) },
|
||||
/* 0B */ { GRPSSE(0f383b) },
|
||||
/* 0C */ { GRPSSE(0f383c) },
|
||||
/* 0D */ { GRPSSE(0f383d) },
|
||||
/* 0E */ { GRPSSE(0f383e) },
|
||||
/* 0F */ { GRPSSE(0f383f) }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f384x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3840) },
|
||||
/* 01 */ { GRPSSE(0f3841) },
|
||||
/* 02 */ { 0, &Ia_Invalid },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { 0, &Ia_Invalid },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f38fx[16] = {
|
||||
/* 00 */ { GRPSSE(0f38f0) },
|
||||
/* 01 */ { GRPSSE(0f38f1) },
|
||||
/* 02 */ { 0, &Ia_Invalid },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { 0, &Ia_Invalid },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteTableA4[16] = {
|
||||
/* 00 */ { GR3BOP(0f380x) },
|
||||
/* 01 */ { GR3BOP(0f381x) },
|
||||
/* 02 */ { GR3BOP(0f382x) },
|
||||
/* 03 */ { GR3BOP(0f383x) },
|
||||
/* 04 */ { GR3BOP(0f384x) },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { GR3BOP(0f38fx) }
|
||||
/* 0F */ { 0, &Ia_Invalid },
|
||||
/* 10 */ { GRPSSE(0f3810) },
|
||||
/* 11 */ { 0, &Ia_Invalid },
|
||||
/* 12 */ { 0, &Ia_Invalid },
|
||||
/* 13 */ { 0, &Ia_Invalid },
|
||||
/* 14 */ { GRPSSE(0f3814) },
|
||||
/* 15 */ { GRPSSE(0f3815) },
|
||||
/* 16 */ { 0, &Ia_Invalid },
|
||||
/* 17 */ { GRPSSE(0f3817) },
|
||||
/* 18 */ { 0, &Ia_Invalid },
|
||||
/* 19 */ { 0, &Ia_Invalid },
|
||||
/* 1A */ { 0, &Ia_Invalid },
|
||||
/* 1B */ { 0, &Ia_Invalid },
|
||||
/* 1C */ { GRPSSE(0f381c) },
|
||||
/* 1D */ { GRPSSE(0f381d) },
|
||||
/* 1E */ { GRPSSE(0f381e) },
|
||||
/* 1F */ { 0, &Ia_Invalid },
|
||||
/* 20 */ { GRPSSE(0f3820) },
|
||||
/* 21 */ { GRPSSE(0f3821) },
|
||||
/* 22 */ { GRPSSE(0f3822) },
|
||||
/* 23 */ { GRPSSE(0f3823) },
|
||||
/* 24 */ { GRPSSE(0f3824) },
|
||||
/* 25 */ { GRPSSE(0f3825) },
|
||||
/* 26 */ { 0, &Ia_Invalid },
|
||||
/* 27 */ { 0, &Ia_Invalid },
|
||||
/* 28 */ { GRPSSE(0f3828) },
|
||||
/* 29 */ { GRPSSE(0f3829) },
|
||||
/* 2A */ { GRPSSE(0f382a) },
|
||||
/* 2B */ { GRPSSE(0f382b) },
|
||||
/* 2C */ { 0, &Ia_Invalid },
|
||||
/* 2D */ { 0, &Ia_Invalid },
|
||||
/* 2E */ { 0, &Ia_Invalid },
|
||||
/* 2F */ { 0, &Ia_Invalid },
|
||||
/* 30 */ { GRPSSE(0f3830) },
|
||||
/* 31 */ { GRPSSE(0f3831) },
|
||||
/* 32 */ { GRPSSE(0f3832) },
|
||||
/* 33 */ { GRPSSE(0f3833) },
|
||||
/* 34 */ { GRPSSE(0f3834) },
|
||||
/* 35 */ { GRPSSE(0f3835) },
|
||||
/* 36 */ { 0, &Ia_Invalid },
|
||||
/* 37 */ { GRPSSE(0f3837) },
|
||||
/* 38 */ { GRPSSE(0f3838) },
|
||||
/* 39 */ { GRPSSE(0f3839) },
|
||||
/* 3A */ { GRPSSE(0f383a) },
|
||||
/* 3B */ { GRPSSE(0f383b) },
|
||||
/* 3C */ { GRPSSE(0f383c) },
|
||||
/* 3D */ { GRPSSE(0f383d) },
|
||||
/* 3E */ { GRPSSE(0f383e) },
|
||||
/* 3F */ { GRPSSE(0f383f) },
|
||||
/* 40 */ { GRPSSE(0f3840) },
|
||||
/* 41 */ { GRPSSE(0f3841) },
|
||||
/* 42 */ { 0, &Ia_Invalid },
|
||||
/* 43 */ { 0, &Ia_Invalid },
|
||||
/* 44 */ { 0, &Ia_Invalid },
|
||||
/* 45 */ { 0, &Ia_Invalid },
|
||||
/* 46 */ { 0, &Ia_Invalid },
|
||||
/* 47 */ { 0, &Ia_Invalid },
|
||||
/* 48 */ { 0, &Ia_Invalid },
|
||||
/* 49 */ { 0, &Ia_Invalid },
|
||||
/* 4A */ { 0, &Ia_Invalid },
|
||||
/* 4B */ { 0, &Ia_Invalid },
|
||||
/* 4C */ { 0, &Ia_Invalid },
|
||||
/* 4D */ { 0, &Ia_Invalid },
|
||||
/* 4E */ { 0, &Ia_Invalid },
|
||||
/* 4F */ { 0, &Ia_Invalid },
|
||||
/* 50 */ { 0, &Ia_Invalid },
|
||||
/* 51 */ { 0, &Ia_Invalid },
|
||||
/* 52 */ { 0, &Ia_Invalid },
|
||||
/* 53 */ { 0, &Ia_Invalid },
|
||||
/* 54 */ { 0, &Ia_Invalid },
|
||||
/* 55 */ { 0, &Ia_Invalid },
|
||||
/* 56 */ { 0, &Ia_Invalid },
|
||||
/* 57 */ { 0, &Ia_Invalid },
|
||||
/* 58 */ { 0, &Ia_Invalid },
|
||||
/* 59 */ { 0, &Ia_Invalid },
|
||||
/* 5A */ { 0, &Ia_Invalid },
|
||||
/* 5B */ { 0, &Ia_Invalid },
|
||||
/* 5C */ { 0, &Ia_Invalid },
|
||||
/* 5D */ { 0, &Ia_Invalid },
|
||||
/* 5E */ { 0, &Ia_Invalid },
|
||||
/* 5F */ { 0, &Ia_Invalid },
|
||||
/* 60 */ { 0, &Ia_Invalid },
|
||||
/* 61 */ { 0, &Ia_Invalid },
|
||||
/* 62 */ { 0, &Ia_Invalid },
|
||||
/* 63 */ { 0, &Ia_Invalid },
|
||||
/* 64 */ { 0, &Ia_Invalid },
|
||||
/* 65 */ { 0, &Ia_Invalid },
|
||||
/* 66 */ { 0, &Ia_Invalid },
|
||||
/* 67 */ { 0, &Ia_Invalid },
|
||||
/* 68 */ { 0, &Ia_Invalid },
|
||||
/* 69 */ { 0, &Ia_Invalid },
|
||||
/* 6A */ { 0, &Ia_Invalid },
|
||||
/* 6B */ { 0, &Ia_Invalid },
|
||||
/* 6C */ { 0, &Ia_Invalid },
|
||||
/* 6D */ { 0, &Ia_Invalid },
|
||||
/* 6E */ { 0, &Ia_Invalid },
|
||||
/* 6F */ { 0, &Ia_Invalid },
|
||||
/* 70 */ { 0, &Ia_Invalid },
|
||||
/* 71 */ { 0, &Ia_Invalid },
|
||||
/* 72 */ { 0, &Ia_Invalid },
|
||||
/* 73 */ { 0, &Ia_Invalid },
|
||||
/* 74 */ { 0, &Ia_Invalid },
|
||||
/* 75 */ { 0, &Ia_Invalid },
|
||||
/* 76 */ { 0, &Ia_Invalid },
|
||||
/* 77 */ { 0, &Ia_Invalid },
|
||||
/* 78 */ { 0, &Ia_Invalid },
|
||||
/* 79 */ { 0, &Ia_Invalid },
|
||||
/* 7A */ { 0, &Ia_Invalid },
|
||||
/* 7B */ { 0, &Ia_Invalid },
|
||||
/* 7C */ { 0, &Ia_Invalid },
|
||||
/* 7D */ { 0, &Ia_Invalid },
|
||||
/* 7E */ { 0, &Ia_Invalid },
|
||||
/* 7F */ { 0, &Ia_Invalid },
|
||||
/* 80 */ { 0, &Ia_Invalid },
|
||||
/* 81 */ { 0, &Ia_Invalid },
|
||||
/* 82 */ { 0, &Ia_Invalid },
|
||||
/* 83 */ { 0, &Ia_Invalid },
|
||||
/* 84 */ { 0, &Ia_Invalid },
|
||||
/* 85 */ { 0, &Ia_Invalid },
|
||||
/* 86 */ { 0, &Ia_Invalid },
|
||||
/* 87 */ { 0, &Ia_Invalid },
|
||||
/* 88 */ { 0, &Ia_Invalid },
|
||||
/* 89 */ { 0, &Ia_Invalid },
|
||||
/* 8A */ { 0, &Ia_Invalid },
|
||||
/* 8B */ { 0, &Ia_Invalid },
|
||||
/* 8C */ { 0, &Ia_Invalid },
|
||||
/* 8D */ { 0, &Ia_Invalid },
|
||||
/* 8E */ { 0, &Ia_Invalid },
|
||||
/* 8F */ { 0, &Ia_Invalid },
|
||||
/* 90 */ { 0, &Ia_Invalid },
|
||||
/* 91 */ { 0, &Ia_Invalid },
|
||||
/* 92 */ { 0, &Ia_Invalid },
|
||||
/* 93 */ { 0, &Ia_Invalid },
|
||||
/* 94 */ { 0, &Ia_Invalid },
|
||||
/* 95 */ { 0, &Ia_Invalid },
|
||||
/* 96 */ { 0, &Ia_Invalid },
|
||||
/* 97 */ { 0, &Ia_Invalid },
|
||||
/* 98 */ { 0, &Ia_Invalid },
|
||||
/* 99 */ { 0, &Ia_Invalid },
|
||||
/* 9A */ { 0, &Ia_Invalid },
|
||||
/* 9B */ { 0, &Ia_Invalid },
|
||||
/* 9C */ { 0, &Ia_Invalid },
|
||||
/* 9D */ { 0, &Ia_Invalid },
|
||||
/* 9E */ { 0, &Ia_Invalid },
|
||||
/* 9F */ { 0, &Ia_Invalid },
|
||||
/* A0 */ { 0, &Ia_Invalid },
|
||||
/* A1 */ { 0, &Ia_Invalid },
|
||||
/* A2 */ { 0, &Ia_Invalid },
|
||||
/* A3 */ { 0, &Ia_Invalid },
|
||||
/* A4 */ { 0, &Ia_Invalid },
|
||||
/* A5 */ { 0, &Ia_Invalid },
|
||||
/* A6 */ { 0, &Ia_Invalid },
|
||||
/* A7 */ { 0, &Ia_Invalid },
|
||||
/* A8 */ { 0, &Ia_Invalid },
|
||||
/* A9 */ { 0, &Ia_Invalid },
|
||||
/* AA */ { 0, &Ia_Invalid },
|
||||
/* AB */ { 0, &Ia_Invalid },
|
||||
/* AC */ { 0, &Ia_Invalid },
|
||||
/* AD */ { 0, &Ia_Invalid },
|
||||
/* AE */ { 0, &Ia_Invalid },
|
||||
/* AF */ { 0, &Ia_Invalid },
|
||||
/* B0 */ { 0, &Ia_Invalid },
|
||||
/* B1 */ { 0, &Ia_Invalid },
|
||||
/* B2 */ { 0, &Ia_Invalid },
|
||||
/* B3 */ { 0, &Ia_Invalid },
|
||||
/* B4 */ { 0, &Ia_Invalid },
|
||||
/* B5 */ { 0, &Ia_Invalid },
|
||||
/* B6 */ { 0, &Ia_Invalid },
|
||||
/* B7 */ { 0, &Ia_Invalid },
|
||||
/* B8 */ { 0, &Ia_Invalid },
|
||||
/* B9 */ { 0, &Ia_Invalid },
|
||||
/* BA */ { 0, &Ia_Invalid },
|
||||
/* BB */ { 0, &Ia_Invalid },
|
||||
/* BC */ { 0, &Ia_Invalid },
|
||||
/* BD */ { 0, &Ia_Invalid },
|
||||
/* BE */ { 0, &Ia_Invalid },
|
||||
/* BF */ { 0, &Ia_Invalid },
|
||||
/* C0 */ { 0, &Ia_Invalid },
|
||||
/* C1 */ { 0, &Ia_Invalid },
|
||||
/* C2 */ { 0, &Ia_Invalid },
|
||||
/* C3 */ { 0, &Ia_Invalid },
|
||||
/* C4 */ { 0, &Ia_Invalid },
|
||||
/* C5 */ { 0, &Ia_Invalid },
|
||||
/* C6 */ { 0, &Ia_Invalid },
|
||||
/* C7 */ { 0, &Ia_Invalid },
|
||||
/* C8 */ { 0, &Ia_Invalid },
|
||||
/* C9 */ { 0, &Ia_Invalid },
|
||||
/* CA */ { 0, &Ia_Invalid },
|
||||
/* CB */ { 0, &Ia_Invalid },
|
||||
/* CC */ { 0, &Ia_Invalid },
|
||||
/* CD */ { 0, &Ia_Invalid },
|
||||
/* CE */ { 0, &Ia_Invalid },
|
||||
/* CF */ { 0, &Ia_Invalid },
|
||||
/* D0 */ { 0, &Ia_Invalid },
|
||||
/* D1 */ { 0, &Ia_Invalid },
|
||||
/* D2 */ { 0, &Ia_Invalid },
|
||||
/* D3 */ { 0, &Ia_Invalid },
|
||||
/* D4 */ { 0, &Ia_Invalid },
|
||||
/* D5 */ { 0, &Ia_Invalid },
|
||||
/* D6 */ { 0, &Ia_Invalid },
|
||||
/* D7 */ { 0, &Ia_Invalid },
|
||||
/* D8 */ { 0, &Ia_Invalid },
|
||||
/* D9 */ { 0, &Ia_Invalid },
|
||||
/* DA */ { 0, &Ia_Invalid },
|
||||
/* DB */ { 0, &Ia_Invalid },
|
||||
/* DC */ { 0, &Ia_Invalid },
|
||||
/* DD */ { 0, &Ia_Invalid },
|
||||
/* DE */ { 0, &Ia_Invalid },
|
||||
/* DF */ { 0, &Ia_Invalid },
|
||||
/* E0 */ { 0, &Ia_Invalid },
|
||||
/* E1 */ { 0, &Ia_Invalid },
|
||||
/* E2 */ { 0, &Ia_Invalid },
|
||||
/* E3 */ { 0, &Ia_Invalid },
|
||||
/* E4 */ { 0, &Ia_Invalid },
|
||||
/* E5 */ { 0, &Ia_Invalid },
|
||||
/* E6 */ { 0, &Ia_Invalid },
|
||||
/* E7 */ { 0, &Ia_Invalid },
|
||||
/* E8 */ { 0, &Ia_Invalid },
|
||||
/* E9 */ { 0, &Ia_Invalid },
|
||||
/* EA */ { 0, &Ia_Invalid },
|
||||
/* EB */ { 0, &Ia_Invalid },
|
||||
/* EC */ { 0, &Ia_Invalid },
|
||||
/* ED */ { 0, &Ia_Invalid },
|
||||
/* EE */ { 0, &Ia_Invalid },
|
||||
/* F0 */ { GRPSSE(0f38f0) },
|
||||
/* F1 */ { GRPSSE(0f38f1) },
|
||||
/* F2 */ { 0, &Ia_Invalid },
|
||||
/* F3 */ { 0, &Ia_Invalid },
|
||||
/* F4 */ { 0, &Ia_Invalid },
|
||||
/* F5 */ { 0, &Ia_Invalid },
|
||||
/* F6 */ { 0, &Ia_Invalid },
|
||||
/* F7 */ { 0, &Ia_Invalid },
|
||||
/* F8 */ { 0, &Ia_Invalid },
|
||||
/* F9 */ { 0, &Ia_Invalid },
|
||||
/* FA */ { 0, &Ia_Invalid },
|
||||
/* FB */ { 0, &Ia_Invalid },
|
||||
/* FC */ { 0, &Ia_Invalid },
|
||||
/* FD */ { 0, &Ia_Invalid },
|
||||
/* FE */ { 0, &Ia_Invalid },
|
||||
/* FF */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
/* ************************************************************************ */
|
||||
/* 3-byte opcode table (Table A-5, 0F 3A) */
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a0x[16] = {
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
|
||||
/* 00 */ { 0, &Ia_Invalid },
|
||||
/* 01 */ { 0, &Ia_Invalid },
|
||||
/* 02 */ { 0, &Ia_Invalid },
|
||||
@ -3066,102 +3191,246 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a0x[16] = {
|
||||
/* 0C */ { GRPSSE(0f3a0c) },
|
||||
/* 0D */ { GRPSSE(0f3a0d) },
|
||||
/* 0E */ { GRPSSE(0f3a0e) },
|
||||
/* 0F */ { GRPSSE(0f3a0f) }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a1x[16] = {
|
||||
/* 00 */ { 0, &Ia_Invalid },
|
||||
/* 01 */ { 0, &Ia_Invalid },
|
||||
/* 02 */ { 0, &Ia_Invalid },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { GRPSSE(0f3a14) },
|
||||
/* 05 */ { GRPSSE(0f3a15) },
|
||||
/* 06 */ { GRPSSE(0f3a16) },
|
||||
/* 07 */ { GRPSSE(0f3a17) },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a2x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3a20) },
|
||||
/* 01 */ { GRPSSE(0f3a21) },
|
||||
/* 02 */ { GRPSSE(0f3a22) },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { 0, &Ia_Invalid },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a4x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3a40) },
|
||||
/* 01 */ { GRPSSE(0f3a41) },
|
||||
/* 02 */ { GRPSSE(0f3a42) },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { 0, &Ia_Invalid },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a6x[16] = {
|
||||
/* 00 */ { GRPSSE(0f3a60) },
|
||||
/* 01 */ { GRPSSE(0f3a61) },
|
||||
/* 02 */ { GRPSSE(0f3a62) },
|
||||
/* 03 */ { GRPSSE(0f3a63) },
|
||||
/* 04 */ { 0, &Ia_Invalid },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { 0, &Ia_Invalid },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasm3ByteTableA5[16] = {
|
||||
/* 00 */ { GR3BOP(0f3a0x) },
|
||||
/* 01 */ { GR3BOP(0f3a1x) },
|
||||
/* 01 */ { GR3BOP(0f3a2x) },
|
||||
/* 03 */ { 0, &Ia_Invalid },
|
||||
/* 04 */ { GR3BOP(0f3a4x) },
|
||||
/* 05 */ { 0, &Ia_Invalid },
|
||||
/* 06 */ { GR3BOP(0f3a6x) },
|
||||
/* 07 */ { 0, &Ia_Invalid },
|
||||
/* 08 */ { 0, &Ia_Invalid },
|
||||
/* 09 */ { 0, &Ia_Invalid },
|
||||
/* 0A */ { 0, &Ia_Invalid },
|
||||
/* 0B */ { 0, &Ia_Invalid },
|
||||
/* 0C */ { 0, &Ia_Invalid },
|
||||
/* 0D */ { 0, &Ia_Invalid },
|
||||
/* 0E */ { 0, &Ia_Invalid },
|
||||
/* 0F */ { 0, &Ia_Invalid }
|
||||
/* 0F */ { GRPSSE(0f3a0f) },
|
||||
/* 10 */ { 0, &Ia_Invalid },
|
||||
/* 11 */ { 0, &Ia_Invalid },
|
||||
/* 12 */ { 0, &Ia_Invalid },
|
||||
/* 13 */ { 0, &Ia_Invalid },
|
||||
/* 14 */ { GRPSSE(0f3a14) },
|
||||
/* 15 */ { GRPSSE(0f3a15) },
|
||||
/* 16 */ { GRPSSE(0f3a16) },
|
||||
/* 17 */ { GRPSSE(0f3a17) },
|
||||
/* 18 */ { 0, &Ia_Invalid },
|
||||
/* 19 */ { 0, &Ia_Invalid },
|
||||
/* 1A */ { 0, &Ia_Invalid },
|
||||
/* 1B */ { 0, &Ia_Invalid },
|
||||
/* 1C */ { 0, &Ia_Invalid },
|
||||
/* 1D */ { 0, &Ia_Invalid },
|
||||
/* 1E */ { 0, &Ia_Invalid },
|
||||
/* 1F */ { 0, &Ia_Invalid },
|
||||
/* 20 */ { GRPSSE(0f3a20) },
|
||||
/* 21 */ { GRPSSE(0f3a21) },
|
||||
/* 22 */ { GRPSSE(0f3a22) },
|
||||
/* 23 */ { 0, &Ia_Invalid },
|
||||
/* 24 */ { 0, &Ia_Invalid },
|
||||
/* 25 */ { 0, &Ia_Invalid },
|
||||
/* 26 */ { 0, &Ia_Invalid },
|
||||
/* 27 */ { 0, &Ia_Invalid },
|
||||
/* 28 */ { 0, &Ia_Invalid },
|
||||
/* 29 */ { 0, &Ia_Invalid },
|
||||
/* 2A */ { 0, &Ia_Invalid },
|
||||
/* 2B */ { 0, &Ia_Invalid },
|
||||
/* 2C */ { 0, &Ia_Invalid },
|
||||
/* 2D */ { 0, &Ia_Invalid },
|
||||
/* 2E */ { 0, &Ia_Invalid },
|
||||
/* 2F */ { 0, &Ia_Invalid },
|
||||
/* 30 */ { 0, &Ia_Invalid },
|
||||
/* 31 */ { 0, &Ia_Invalid },
|
||||
/* 32 */ { 0, &Ia_Invalid },
|
||||
/* 33 */ { 0, &Ia_Invalid },
|
||||
/* 34 */ { 0, &Ia_Invalid },
|
||||
/* 35 */ { 0, &Ia_Invalid },
|
||||
/* 36 */ { 0, &Ia_Invalid },
|
||||
/* 37 */ { 0, &Ia_Invalid },
|
||||
/* 38 */ { 0, &Ia_Invalid },
|
||||
/* 39 */ { 0, &Ia_Invalid },
|
||||
/* 3A */ { 0, &Ia_Invalid },
|
||||
/* 3B */ { 0, &Ia_Invalid },
|
||||
/* 3C */ { 0, &Ia_Invalid },
|
||||
/* 3D */ { 0, &Ia_Invalid },
|
||||
/* 3E */ { 0, &Ia_Invalid },
|
||||
/* 3F */ { 0, &Ia_Invalid },
|
||||
/* 40 */ { GRPSSE(0f3a40) },
|
||||
/* 41 */ { GRPSSE(0f3a41) },
|
||||
/* 42 */ { GRPSSE(0f3a42) },
|
||||
/* 43 */ { 0, &Ia_Invalid },
|
||||
/* 44 */ { 0, &Ia_Invalid },
|
||||
/* 45 */ { 0, &Ia_Invalid },
|
||||
/* 46 */ { 0, &Ia_Invalid },
|
||||
/* 47 */ { 0, &Ia_Invalid },
|
||||
/* 48 */ { 0, &Ia_Invalid },
|
||||
/* 49 */ { 0, &Ia_Invalid },
|
||||
/* 4A */ { 0, &Ia_Invalid },
|
||||
/* 4B */ { 0, &Ia_Invalid },
|
||||
/* 4C */ { 0, &Ia_Invalid },
|
||||
/* 4D */ { 0, &Ia_Invalid },
|
||||
/* 4E */ { 0, &Ia_Invalid },
|
||||
/* 4F */ { 0, &Ia_Invalid },
|
||||
/* 50 */ { 0, &Ia_Invalid },
|
||||
/* 51 */ { 0, &Ia_Invalid },
|
||||
/* 52 */ { 0, &Ia_Invalid },
|
||||
/* 53 */ { 0, &Ia_Invalid },
|
||||
/* 54 */ { 0, &Ia_Invalid },
|
||||
/* 55 */ { 0, &Ia_Invalid },
|
||||
/* 56 */ { 0, &Ia_Invalid },
|
||||
/* 57 */ { 0, &Ia_Invalid },
|
||||
/* 58 */ { 0, &Ia_Invalid },
|
||||
/* 59 */ { 0, &Ia_Invalid },
|
||||
/* 5A */ { 0, &Ia_Invalid },
|
||||
/* 5B */ { 0, &Ia_Invalid },
|
||||
/* 5C */ { 0, &Ia_Invalid },
|
||||
/* 5D */ { 0, &Ia_Invalid },
|
||||
/* 5E */ { 0, &Ia_Invalid },
|
||||
/* 5F */ { 0, &Ia_Invalid },
|
||||
/* 60 */ { GRPSSE(0f3a60) },
|
||||
/* 61 */ { GRPSSE(0f3a61) },
|
||||
/* 62 */ { GRPSSE(0f3a62) },
|
||||
/* 63 */ { GRPSSE(0f3a63) },
|
||||
/* 64 */ { 0, &Ia_Invalid },
|
||||
/* 65 */ { 0, &Ia_Invalid },
|
||||
/* 66 */ { 0, &Ia_Invalid },
|
||||
/* 67 */ { 0, &Ia_Invalid },
|
||||
/* 68 */ { 0, &Ia_Invalid },
|
||||
/* 69 */ { 0, &Ia_Invalid },
|
||||
/* 6A */ { 0, &Ia_Invalid },
|
||||
/* 6B */ { 0, &Ia_Invalid },
|
||||
/* 6C */ { 0, &Ia_Invalid },
|
||||
/* 6D */ { 0, &Ia_Invalid },
|
||||
/* 6E */ { 0, &Ia_Invalid },
|
||||
/* 6F */ { 0, &Ia_Invalid },
|
||||
/* 70 */ { 0, &Ia_Invalid },
|
||||
/* 71 */ { 0, &Ia_Invalid },
|
||||
/* 72 */ { 0, &Ia_Invalid },
|
||||
/* 73 */ { 0, &Ia_Invalid },
|
||||
/* 74 */ { 0, &Ia_Invalid },
|
||||
/* 75 */ { 0, &Ia_Invalid },
|
||||
/* 76 */ { 0, &Ia_Invalid },
|
||||
/* 77 */ { 0, &Ia_Invalid },
|
||||
/* 78 */ { 0, &Ia_Invalid },
|
||||
/* 79 */ { 0, &Ia_Invalid },
|
||||
/* 7A */ { 0, &Ia_Invalid },
|
||||
/* 7B */ { 0, &Ia_Invalid },
|
||||
/* 7C */ { 0, &Ia_Invalid },
|
||||
/* 7D */ { 0, &Ia_Invalid },
|
||||
/* 7E */ { 0, &Ia_Invalid },
|
||||
/* 7F */ { 0, &Ia_Invalid },
|
||||
/* 80 */ { 0, &Ia_Invalid },
|
||||
/* 81 */ { 0, &Ia_Invalid },
|
||||
/* 82 */ { 0, &Ia_Invalid },
|
||||
/* 83 */ { 0, &Ia_Invalid },
|
||||
/* 84 */ { 0, &Ia_Invalid },
|
||||
/* 85 */ { 0, &Ia_Invalid },
|
||||
/* 86 */ { 0, &Ia_Invalid },
|
||||
/* 87 */ { 0, &Ia_Invalid },
|
||||
/* 88 */ { 0, &Ia_Invalid },
|
||||
/* 89 */ { 0, &Ia_Invalid },
|
||||
/* 8A */ { 0, &Ia_Invalid },
|
||||
/* 8B */ { 0, &Ia_Invalid },
|
||||
/* 8C */ { 0, &Ia_Invalid },
|
||||
/* 8D */ { 0, &Ia_Invalid },
|
||||
/* 8E */ { 0, &Ia_Invalid },
|
||||
/* 8F */ { 0, &Ia_Invalid },
|
||||
/* 90 */ { 0, &Ia_Invalid },
|
||||
/* 91 */ { 0, &Ia_Invalid },
|
||||
/* 92 */ { 0, &Ia_Invalid },
|
||||
/* 93 */ { 0, &Ia_Invalid },
|
||||
/* 94 */ { 0, &Ia_Invalid },
|
||||
/* 95 */ { 0, &Ia_Invalid },
|
||||
/* 96 */ { 0, &Ia_Invalid },
|
||||
/* 97 */ { 0, &Ia_Invalid },
|
||||
/* 98 */ { 0, &Ia_Invalid },
|
||||
/* 99 */ { 0, &Ia_Invalid },
|
||||
/* 9A */ { 0, &Ia_Invalid },
|
||||
/* 9B */ { 0, &Ia_Invalid },
|
||||
/* 9C */ { 0, &Ia_Invalid },
|
||||
/* 9D */ { 0, &Ia_Invalid },
|
||||
/* 9E */ { 0, &Ia_Invalid },
|
||||
/* 9F */ { 0, &Ia_Invalid },
|
||||
/* A0 */ { 0, &Ia_Invalid },
|
||||
/* A1 */ { 0, &Ia_Invalid },
|
||||
/* A2 */ { 0, &Ia_Invalid },
|
||||
/* A3 */ { 0, &Ia_Invalid },
|
||||
/* A4 */ { 0, &Ia_Invalid },
|
||||
/* A5 */ { 0, &Ia_Invalid },
|
||||
/* A6 */ { 0, &Ia_Invalid },
|
||||
/* A7 */ { 0, &Ia_Invalid },
|
||||
/* A8 */ { 0, &Ia_Invalid },
|
||||
/* A9 */ { 0, &Ia_Invalid },
|
||||
/* AA */ { 0, &Ia_Invalid },
|
||||
/* AB */ { 0, &Ia_Invalid },
|
||||
/* AC */ { 0, &Ia_Invalid },
|
||||
/* AD */ { 0, &Ia_Invalid },
|
||||
/* AE */ { 0, &Ia_Invalid },
|
||||
/* AF */ { 0, &Ia_Invalid },
|
||||
/* B0 */ { 0, &Ia_Invalid },
|
||||
/* B1 */ { 0, &Ia_Invalid },
|
||||
/* B2 */ { 0, &Ia_Invalid },
|
||||
/* B3 */ { 0, &Ia_Invalid },
|
||||
/* B4 */ { 0, &Ia_Invalid },
|
||||
/* B5 */ { 0, &Ia_Invalid },
|
||||
/* B6 */ { 0, &Ia_Invalid },
|
||||
/* B7 */ { 0, &Ia_Invalid },
|
||||
/* B8 */ { 0, &Ia_Invalid },
|
||||
/* B9 */ { 0, &Ia_Invalid },
|
||||
/* BA */ { 0, &Ia_Invalid },
|
||||
/* BB */ { 0, &Ia_Invalid },
|
||||
/* BC */ { 0, &Ia_Invalid },
|
||||
/* BD */ { 0, &Ia_Invalid },
|
||||
/* BE */ { 0, &Ia_Invalid },
|
||||
/* BF */ { 0, &Ia_Invalid },
|
||||
/* C0 */ { 0, &Ia_Invalid },
|
||||
/* C1 */ { 0, &Ia_Invalid },
|
||||
/* C2 */ { 0, &Ia_Invalid },
|
||||
/* C3 */ { 0, &Ia_Invalid },
|
||||
/* C4 */ { 0, &Ia_Invalid },
|
||||
/* C5 */ { 0, &Ia_Invalid },
|
||||
/* C6 */ { 0, &Ia_Invalid },
|
||||
/* C7 */ { 0, &Ia_Invalid },
|
||||
/* C8 */ { 0, &Ia_Invalid },
|
||||
/* C9 */ { 0, &Ia_Invalid },
|
||||
/* CA */ { 0, &Ia_Invalid },
|
||||
/* CB */ { 0, &Ia_Invalid },
|
||||
/* CC */ { 0, &Ia_Invalid },
|
||||
/* CD */ { 0, &Ia_Invalid },
|
||||
/* CE */ { 0, &Ia_Invalid },
|
||||
/* CF */ { 0, &Ia_Invalid },
|
||||
/* D0 */ { 0, &Ia_Invalid },
|
||||
/* D1 */ { 0, &Ia_Invalid },
|
||||
/* D2 */ { 0, &Ia_Invalid },
|
||||
/* D3 */ { 0, &Ia_Invalid },
|
||||
/* D4 */ { 0, &Ia_Invalid },
|
||||
/* D5 */ { 0, &Ia_Invalid },
|
||||
/* D6 */ { 0, &Ia_Invalid },
|
||||
/* D7 */ { 0, &Ia_Invalid },
|
||||
/* D8 */ { 0, &Ia_Invalid },
|
||||
/* D9 */ { 0, &Ia_Invalid },
|
||||
/* DA */ { 0, &Ia_Invalid },
|
||||
/* DB */ { 0, &Ia_Invalid },
|
||||
/* DC */ { 0, &Ia_Invalid },
|
||||
/* DD */ { 0, &Ia_Invalid },
|
||||
/* DE */ { 0, &Ia_Invalid },
|
||||
/* DF */ { 0, &Ia_Invalid },
|
||||
/* E0 */ { 0, &Ia_Invalid },
|
||||
/* E1 */ { 0, &Ia_Invalid },
|
||||
/* E2 */ { 0, &Ia_Invalid },
|
||||
/* E3 */ { 0, &Ia_Invalid },
|
||||
/* E4 */ { 0, &Ia_Invalid },
|
||||
/* E5 */ { 0, &Ia_Invalid },
|
||||
/* E6 */ { 0, &Ia_Invalid },
|
||||
/* E7 */ { 0, &Ia_Invalid },
|
||||
/* E8 */ { 0, &Ia_Invalid },
|
||||
/* E9 */ { 0, &Ia_Invalid },
|
||||
/* EA */ { 0, &Ia_Invalid },
|
||||
/* EB */ { 0, &Ia_Invalid },
|
||||
/* EC */ { 0, &Ia_Invalid },
|
||||
/* ED */ { 0, &Ia_Invalid },
|
||||
/* EE */ { 0, &Ia_Invalid },
|
||||
/* F0 */ { 0, &Ia_Invalid },
|
||||
/* F1 */ { 0, &Ia_Invalid },
|
||||
/* F2 */ { 0, &Ia_Invalid },
|
||||
/* F3 */ { 0, &Ia_Invalid },
|
||||
/* F4 */ { 0, &Ia_Invalid },
|
||||
/* F5 */ { 0, &Ia_Invalid },
|
||||
/* F6 */ { 0, &Ia_Invalid },
|
||||
/* F7 */ { 0, &Ia_Invalid },
|
||||
/* F8 */ { 0, &Ia_Invalid },
|
||||
/* F9 */ { 0, &Ia_Invalid },
|
||||
/* FA */ { 0, &Ia_Invalid },
|
||||
/* FB */ { 0, &Ia_Invalid },
|
||||
/* FC */ { 0, &Ia_Invalid },
|
||||
/* FD */ { 0, &Ia_Invalid },
|
||||
/* FE */ { 0, &Ia_Invalid },
|
||||
/* FF */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
/* ************************************************************************ */
|
||||
@ -3480,17 +3749,17 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes16[256*2] = {
|
||||
/* 0F 32 */ { 0, &Ia_rdmsr },
|
||||
/* 0F 33 */ { 0, &Ia_rdpmc },
|
||||
/* 0F 34 */ { 0, &Ia_sysenter },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(A4) },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(0f38) },
|
||||
/* 0F 39 */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(A5) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(0f3a) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
|
||||
/* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
|
||||
/* 0F 42 */ { 0, &Ia_cmovcw_Gw_Ew },
|
||||
@ -4001,17 +4270,17 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes32[256*2] = {
|
||||
/* 0F 32 */ { 0, &Ia_rdmsr },
|
||||
/* 0F 33 */ { 0, &Ia_rdpmc },
|
||||
/* 0F 34 */ { 0, &Ia_sysenter },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(A4) },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(0f38) },
|
||||
/* 0F 39 */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(A5) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(0f3a) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
|
||||
/* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
|
||||
/* 0F 42 */ { 0, &Ia_cmovcl_Gd_Ed },
|
||||
@ -4522,17 +4791,17 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64w[256*2] = {
|
||||
/* 0F 32 */ { 0, &Ia_rdmsr },
|
||||
/* 0F 33 */ { 0, &Ia_rdpmc },
|
||||
/* 0F 34 */ { 0, &Ia_sysenter },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(A4) },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(0f38) },
|
||||
/* 0F 39 */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(A5) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(0f3a) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
|
||||
/* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
|
||||
/* 0F 42 */ { 0, &Ia_cmovcw_Gw_Ew },
|
||||
@ -5040,17 +5309,17 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64d[256*2] = {
|
||||
/* 0F 32 */ { 0, &Ia_rdmsr },
|
||||
/* 0F 33 */ { 0, &Ia_rdpmc },
|
||||
/* 0F 34 */ { 0, &Ia_sysenter },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(A4) },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(0f38) },
|
||||
/* 0F 39 */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(A5) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(0f3a) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
|
||||
/* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
|
||||
/* 0F 42 */ { 0, &Ia_cmovcl_Gd_Ed },
|
||||
@ -5558,17 +5827,17 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64q[256*2] = {
|
||||
/* 0F 32 */ { 0, &Ia_rdmsr },
|
||||
/* 0F 33 */ { 0, &Ia_rdpmc },
|
||||
/* 0F 34 */ { 0, &Ia_sysenter },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(A4) },
|
||||
/* 0F 35 */ { 0, &Ia_sysexit },
|
||||
/* 0F 36 */ { 0, &Ia_Invalid },
|
||||
/* 0F 37 */ { 0, &Ia_Invalid },
|
||||
/* 0F 38 */ { GR3BTAB(0f38) },
|
||||
/* 0F 39 */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(A5) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 3A */ { GR3BTAB(0f3a) },
|
||||
/* 0F 3B */ { 0, &Ia_Invalid },
|
||||
/* 0F 3C */ { 0, &Ia_Invalid },
|
||||
/* 0F 3D */ { 0, &Ia_Invalid },
|
||||
/* 0F 3E */ { 0, &Ia_Invalid },
|
||||
/* 0F 3F */ { 0, &Ia_Invalid },
|
||||
/* 0F 40 */ { 0, &Ia_cmovoq_Gq_Eq },
|
||||
/* 0F 41 */ { 0, &Ia_cmovnoq_Gq_Eq },
|
||||
/* 0F 42 */ { 0, &Ia_cmovcq_Gq_Eq },
|
||||
|
Loading…
Reference in New Issue
Block a user