From 6b5192d98ac26526721d0d9808b3cc6303263366 Mon Sep 17 00:00:00 2001 From: Bryce Denney Date: Sun, 22 Sep 2002 15:29:51 +0000 Subject: [PATCH] - from Peter Tattam: fixed invalid instructions for 64 bit mode --- bochs/cpu/fetchdecode64.cc | 158 +++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 78 deletions(-) diff --git a/bochs/cpu/fetchdecode64.cc b/bochs/cpu/fetchdecode64.cc index 0639b8fa2..b5c7de4ad 100644 --- a/bochs/cpu/fetchdecode64.cc +++ b/bochs/cpu/fetchdecode64.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode64.cc,v 1.8 2002-09-20 23:17:51 kevinlawton Exp $ +// $Id: fetchdecode64.cc,v 1.9 2002-09-22 15:29:51 bdenney Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -469,15 +469,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 03 */ { BxAnother, &BX_CPU_C::ADD_GwEw }, /* 04 */ { BxImmediate_Ib, &BX_CPU_C::ADD_ALIb }, /* 05 */ { BxImmediate_Iv, &BX_CPU_C::ADD_AXIw }, - /* 06 */ { 0, &BX_CPU_C::PUSH_ES }, - /* 07 */ { 0, &BX_CPU_C::POP_ES }, + /* 06 */ { 0, &BX_CPU_C::BxError }, + /* 07 */ { 0, &BX_CPU_C::BxError }, /* 08 */ { BxAnother, &BX_CPU_C::OR_EbGb }, /* 09 */ { BxAnother, &BX_CPU_C::OR_EwGw }, /* 0A */ { BxAnother, &BX_CPU_C::OR_GbEb }, /* 0B */ { BxAnother, &BX_CPU_C::OR_GwEw }, /* 0C */ { BxImmediate_Ib, &BX_CPU_C::OR_ALIb }, /* 0D */ { BxImmediate_Iv, &BX_CPU_C::OR_AXIw }, - /* 0E */ { 0, &BX_CPU_C::PUSH_CS }, + /* 0E */ { 0, &BX_CPU_C::BxError }, /* 0F */ { BxAnother, &BX_CPU_C::BxError }, // 2-byte escape /* 10 */ { BxAnother, &BX_CPU_C::ADC_EbGb }, /* 11 */ { BxAnother, &BX_CPU_C::ADC_EwGw }, @@ -485,16 +485,16 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 13 */ { BxAnother, &BX_CPU_C::ADC_GwEw }, /* 14 */ { BxImmediate_Ib, &BX_CPU_C::ADC_ALIb }, /* 15 */ { BxImmediate_Iv, &BX_CPU_C::ADC_AXIw }, - /* 16 */ { 0, &BX_CPU_C::PUSH_SS }, - /* 17 */ { 0, &BX_CPU_C::POP_SS }, + /* 16 */ { 0, &BX_CPU_C::BxError }, + /* 17 */ { 0, &BX_CPU_C::BxError }, /* 18 */ { BxAnother, &BX_CPU_C::SBB_EbGb }, /* 19 */ { BxAnother, &BX_CPU_C::SBB_EwGw }, /* 1A */ { BxAnother, &BX_CPU_C::SBB_GbEb }, /* 1B */ { BxAnother, &BX_CPU_C::SBB_GwEw }, /* 1C */ { BxImmediate_Ib, &BX_CPU_C::SBB_ALIb }, /* 1D */ { BxImmediate_Iv, &BX_CPU_C::SBB_AXIw }, - /* 1E */ { 0, &BX_CPU_C::PUSH_DS }, - /* 1F */ { 0, &BX_CPU_C::POP_DS }, + /* 1E */ { 0, &BX_CPU_C::BxError }, + /* 1F */ { 0, &BX_CPU_C::BxError }, /* 20 */ { BxAnother, &BX_CPU_C::AND_EbGb }, /* 21 */ { BxAnother, &BX_CPU_C::AND_EwGw }, /* 22 */ { BxAnother, &BX_CPU_C::AND_GbEb }, @@ -502,7 +502,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 24 */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 */ { BxImmediate_Iv, &BX_CPU_C::AND_AXIw }, /* 26 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // ES: - /* 27 */ { 0, &BX_CPU_C::DAA }, + /* 27 */ { 0, &BX_CPU_C::BxError }, /* 28 */ { BxAnother, &BX_CPU_C::SUB_EbGb }, /* 29 */ { BxAnother, &BX_CPU_C::SUB_EwGw }, /* 2A */ { BxAnother, &BX_CPU_C::SUB_GbEb }, @@ -510,7 +510,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 2C */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D */ { BxImmediate_Iv, &BX_CPU_C::SUB_AXIw }, /* 2E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // CS: - /* 2F */ { 0, &BX_CPU_C::DAS }, + /* 2F */ { 0, &BX_CPU_C::BxError }, /* 30 */ { BxAnother, &BX_CPU_C::XOR_EbGb }, /* 31 */ { BxAnother, &BX_CPU_C::XOR_EwGw }, /* 32 */ { BxAnother, &BX_CPU_C::XOR_GbEb }, @@ -518,7 +518,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 34 */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 */ { BxImmediate_Iv, &BX_CPU_C::XOR_AXIw }, /* 36 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // SS: - /* 37 */ { 0, &BX_CPU_C::AAA }, + /* 37 */ { 0, &BX_CPU_C::BxError }, /* 38 */ { BxAnother, &BX_CPU_C::CMP_EbGb }, /* 39 */ { BxAnother, &BX_CPU_C::CMP_EwGw }, /* 3A */ { BxAnother, &BX_CPU_C::CMP_GbEb }, @@ -526,7 +526,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 3C */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D */ { BxImmediate_Iv, &BX_CPU_C::CMP_AXIw }, /* 3E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // DS: - /* 3F */ { 0, &BX_CPU_C::AAS }, + /* 3F */ { 0, &BX_CPU_C::BxError }, /* 40 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 41 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 42 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: @@ -559,10 +559,11 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 5D */ { 0, &BX_CPU_C::POP_RX }, /* 5E */ { 0, &BX_CPU_C::POP_RX }, /* 5F */ { 0, &BX_CPU_C::POP_RX }, - /* 60 */ { 0, &BX_CPU_C::PUSHAD16 }, - /* 61 */ { 0, &BX_CPU_C::POPAD16 }, - /* 62 */ { BxAnother, &BX_CPU_C::BOUND_GvMa }, - /* 63 */ { BxAnother, &BX_CPU_C::BxError }, + /* 60 */ { 0, &BX_CPU_C::BxError }, + /* 61 */ { 0, &BX_CPU_C::BxError }, + /* 62 */ { 0, &BX_CPU_C::BxError }, +#warning PRT: op=63 This needs checking on real hardware. Manual says 16 bit version leaves upper 48 bits unchanged + /* 63 */ { BxAnother, &BX_CPU_C::MOVSX_GwEw }, // /* 64 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // FS: /* 65 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // GS: /* 66 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // OS: @@ -593,7 +594,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw }, /* 80 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, /* 81 */ { BxAnother | BxGroup1 | BxImmediate_Iv, NULL, BxOpcodeInfo64G1Ew }, - /* 82 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, + /* 82 */ { 0, &BX_CPU_C::BxError }, /* 83 */ { BxAnother | BxGroup1 | BxImmediate_Ib_SE, NULL, BxOpcodeInfo64G1Ew }, /* 84 */ { BxAnother, &BX_CPU_C::TEST_EbGb }, /* 85 */ { BxAnother, &BX_CPU_C::TEST_EwGw }, @@ -617,12 +618,12 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 97 */ { 0, &BX_CPU_C::XCHG_RXAX }, /* 98 */ { 0, &BX_CPU_C::CBW }, /* 99 */ { 0, &BX_CPU_C::CWD }, - /* 9A */ { BxImmediate_IvIw, &BX_CPU_C::CALL16_Ap }, // invalid?? + /* 9A */ { 0, &BX_CPU_C::BxError }, /* 9B */ { 0, &BX_CPU_C::FWAIT }, /* 9C */ { 0, &BX_CPU_C::PUSHF_Fv }, /* 9D */ { 0, &BX_CPU_C::POPF_Fv }, - /* 9E */ { 0, &BX_CPU_C::SAHF }, - /* 9F */ { 0, &BX_CPU_C::LAHF }, + /* 9E */ { 0, &BX_CPU_C::BxError }, + /* 9F */ { 0, &BX_CPU_C::BxError }, /* A0 */ { BxImmediate_Oq, &BX_CPU_C::MOV_ALOq }, /* A1 */ { BxImmediate_Oq, &BX_CPU_C::MOV_AXOq }, /* A2 */ { BxImmediate_Oq, &BX_CPU_C::MOV_OqAL }, @@ -659,8 +660,8 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* C1 */ { BxAnother | BxGroup2 | BxImmediate_Ib, NULL, BxOpcodeInfo64G2Ew }, /* C2 */ { BxImmediate_Iw, &BX_CPU_C::RETnear16_Iw }, /* C3 */ { 0, &BX_CPU_C::RETnear16 }, - /* C4 */ { BxAnother, &BX_CPU_C::LES_GvMp }, - /* C5 */ { BxAnother, &BX_CPU_C::LDS_GvMp }, + /* C4 */ { 0, &BX_CPU_C::BxError }, + /* C5 */ { 0, &BX_CPU_C::BxError }, /* C6 */ { BxAnother | BxImmediate_Ib, &BX_CPU_C::MOV_EbIb }, /* C7 */ { BxAnother | BxImmediate_Iv, &BX_CPU_C::MOV_EwIw }, /* C8 */ { BxImmediate_IwIb, &BX_CPU_C::ENTER64_IwIb }, @@ -669,15 +670,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* CB */ { 0, &BX_CPU_C::RETfar16 }, /* CC */ { 0, &BX_CPU_C::INT3 }, /* CD */ { BxImmediate_Ib, &BX_CPU_C::INT_Ib }, - /* CE */ { 0, &BX_CPU_C::INTO }, + /* CE */ { 0, &BX_CPU_C::BxError }, /* CF */ { 0, &BX_CPU_C::IRET16 }, /* D0 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D1 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Ew }, /* D2 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D3 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Ew }, - /* D4 */ { BxImmediate_Ib, &BX_CPU_C::AAM }, - /* D5 */ { BxImmediate_Ib, &BX_CPU_C::AAD }, - /* D6 */ { 0, &BX_CPU_C::SALC }, + /* D4 */ { 0, &BX_CPU_C::BxError }, + /* D5 */ { 0, &BX_CPU_C::BxError }, + /* D6 */ { 0, &BX_CPU_C::BxError }, /* D7 */ { 0, &BX_CPU_C::XLAT }, /* D8 */ { BxAnother, &BX_CPU_C::ESC0 }, /* D9 */ { BxAnother, &BX_CPU_C::ESC1 }, @@ -697,7 +698,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* E7 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbeAX }, /* E8 */ { BxImmediate_BrOff16, &BX_CPU_C::CALL_Aw }, /* E9 */ { BxImmediate_BrOff16, &BX_CPU_C::JMP_Jq }, - /* EA */ { BxImmediate_IvIw, &BX_CPU_C::JMP_Ap }, + /* EA */ { 0, &BX_CPU_C::BxError }, /* EB */ { BxImmediate_BrOff8, &BX_CPU_C::JMP_Jq }, /* EC */ { 0, &BX_CPU_C::IN_ALDX }, /* ED */ { 0, &BX_CPU_C::IN_eAXDX }, @@ -984,15 +985,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 03 */ { BxAnother, &BX_CPU_C::ADD_GdEd }, /* 04 */ { BxImmediate_Ib, &BX_CPU_C::ADD_ALIb }, /* 05 */ { BxImmediate_Iv, &BX_CPU_C::ADD_EAXId }, - /* 06 */ { 0, &BX_CPU_C::PUSH64_ES }, - /* 07 */ { 0, &BX_CPU_C::POP64_ES }, + /* 06 */ { 0, &BX_CPU_C::BxError }, + /* 07 */ { 0, &BX_CPU_C::BxError }, /* 08 */ { BxAnother, &BX_CPU_C::OR_EbGb }, /* 09 */ { BxAnother, &BX_CPU_C::OR_EdGd }, /* 0A */ { BxAnother, &BX_CPU_C::OR_GbEb }, /* 0B */ { BxAnother, &BX_CPU_C::OR_GdEd }, /* 0C */ { BxImmediate_Ib, &BX_CPU_C::OR_ALIb }, /* 0D */ { BxImmediate_Iv, &BX_CPU_C::OR_EAXId }, - /* 0E */ { 0, &BX_CPU_C::PUSH64_CS }, + /* 0E */ { 0, &BX_CPU_C::BxError }, /* 0F */ { BxAnother, &BX_CPU_C::BxError }, // 2-byte escape /* 10 */ { BxAnother, &BX_CPU_C::ADC_EbGb }, /* 11 */ { BxAnother, &BX_CPU_C::ADC_EdGd }, @@ -1000,16 +1001,16 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 13 */ { BxAnother, &BX_CPU_C::ADC_GdEd }, /* 14 */ { BxImmediate_Ib, &BX_CPU_C::ADC_ALIb }, /* 15 */ { BxImmediate_Iv, &BX_CPU_C::ADC_EAXId }, - /* 16 */ { 0, &BX_CPU_C::PUSH64_SS }, - /* 17 */ { 0, &BX_CPU_C::POP64_SS }, + /* 16 */ { 0, &BX_CPU_C::BxError }, + /* 17 */ { 0, &BX_CPU_C::BxError }, /* 18 */ { BxAnother, &BX_CPU_C::SBB_EbGb }, /* 19 */ { BxAnother, &BX_CPU_C::SBB_EdGd }, /* 1A */ { BxAnother, &BX_CPU_C::SBB_GbEb }, /* 1B */ { BxAnother, &BX_CPU_C::SBB_GdEd }, /* 1C */ { BxImmediate_Ib, &BX_CPU_C::SBB_ALIb }, /* 1D */ { BxImmediate_Iv, &BX_CPU_C::SBB_EAXId }, - /* 1E */ { 0, &BX_CPU_C::PUSH64_DS }, - /* 1F */ { 0, &BX_CPU_C::POP64_DS }, + /* 1E */ { 0, &BX_CPU_C::BxError }, + /* 1F */ { 0, &BX_CPU_C::BxError }, /* 20 */ { BxAnother, &BX_CPU_C::AND_EbGb }, /* 21 */ { BxAnother, &BX_CPU_C::AND_EdGd }, /* 22 */ { BxAnother, &BX_CPU_C::AND_GbEb }, @@ -1017,7 +1018,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 24 */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 */ { BxImmediate_Iv, &BX_CPU_C::AND_EAXId }, /* 26 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // ES: - /* 27 */ { 0, &BX_CPU_C::DAA }, + /* 27 */ { 0, &BX_CPU_C::BxError }, /* 28 */ { BxAnother, &BX_CPU_C::SUB_EbGb }, /* 29 */ { BxAnother, &BX_CPU_C::SUB_EdGd }, /* 2A */ { BxAnother, &BX_CPU_C::SUB_GbEb }, @@ -1025,7 +1026,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 2C */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D */ { BxImmediate_Iv, &BX_CPU_C::SUB_EAXId }, /* 2E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // CS: - /* 2F */ { 0, &BX_CPU_C::DAS }, + /* 2F */ { 0, &BX_CPU_C::BxError }, /* 30 */ { BxAnother, &BX_CPU_C::XOR_EbGb }, /* 31 */ { BxAnother, &BX_CPU_C::XOR_EdGd }, /* 32 */ { BxAnother, &BX_CPU_C::XOR_GbEb }, @@ -1033,7 +1034,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 34 */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 */ { BxImmediate_Iv, &BX_CPU_C::XOR_EAXId }, /* 36 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // SS: - /* 37 */ { 0, &BX_CPU_C::AAA }, + /* 37 */ { 0, &BX_CPU_C::BxError }, /* 38 */ { BxAnother, &BX_CPU_C::CMP_EbGb }, /* 39 */ { BxAnother, &BX_CPU_C::CMP_EdGd }, /* 3A */ { BxAnother, &BX_CPU_C::CMP_GbEb }, @@ -1041,7 +1042,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 3C */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D */ { BxImmediate_Iv, &BX_CPU_C::CMP_EAXId }, /* 3E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // DS: - /* 3F */ { 0, &BX_CPU_C::AAS }, + /* 3F */ { 0, &BX_CPU_C::BxError }, /* 40 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 41 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 42 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: @@ -1074,10 +1075,11 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 5D */ { 0, &BX_CPU_C::POP_RRX }, /* 5E */ { 0, &BX_CPU_C::POP_RRX }, /* 5F */ { 0, &BX_CPU_C::POP_RRX }, - /* 60 */ { 0, &BX_CPU_C::PUSHAD32 }, - /* 61 */ { 0, &BX_CPU_C::POPAD32 }, - /* 62 */ { BxAnother, &BX_CPU_C::BOUND_GvMa }, - /* 63 */ { 0, &BX_CPU_C::BxError }, + /* 60 */ { 0, &BX_CPU_C::BxError }, + /* 61 */ { 0, &BX_CPU_C::BxError }, + /* 62 */ { 0, &BX_CPU_C::BxError }, +#warning PRT: This needs checking on real hardware. Manual says 32 bit version zero extends result + /* 63 */ { BxAnother, &BX_CPU_C::MOV_GdEd }, /* 64 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // FS: /* 65 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // GS: /* 66 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // OS: @@ -1108,7 +1110,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd }, /* 80 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, /* 81 */ { BxAnother | BxGroup1 | BxImmediate_Iv, NULL, BxOpcodeInfo64G1Ed }, - /* 82 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, + /* 82 */ { 0, &BX_CPU_C::BxError }, /* 83 */ { BxAnother | BxGroup1 | BxImmediate_Ib_SE, NULL, BxOpcodeInfo64G1Ed }, /* 84 */ { BxAnother, &BX_CPU_C::TEST_EbGb }, /* 85 */ { BxAnother, &BX_CPU_C::TEST_EdGd }, @@ -1132,12 +1134,12 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 97 */ { 0, &BX_CPU_C::XCHG_ERXEAX }, /* 98 */ { 0, &BX_CPU_C::CWDE }, /* 99 */ { 0, &BX_CPU_C::CDQ }, - /* 9A */ { BxImmediate_IvIw, &BX_CPU_C::CALL32_Ap }, + /* 9A */ { 0, &BX_CPU_C::BxError }, /* 9B */ { 0, &BX_CPU_C::FWAIT }, /* 9C */ { 0, &BX_CPU_C::PUSHF_Fv }, /* 9D */ { 0, &BX_CPU_C::POPF_Fv }, - /* 9E */ { 0, &BX_CPU_C::SAHF }, - /* 9F */ { 0, &BX_CPU_C::LAHF }, + /* 9E */ { 0, &BX_CPU_C::BxError }, + /* 9F */ { 0, &BX_CPU_C::BxError }, /* A0 */ { BxImmediate_Oq, &BX_CPU_C::MOV_ALOq }, /* A1 */ { BxImmediate_Oq, &BX_CPU_C::MOV_EAXOq }, /* A2 */ { BxImmediate_Oq, &BX_CPU_C::MOV_OqAL }, @@ -1174,8 +1176,8 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* C1 */ { BxAnother | BxGroup2 | BxImmediate_Ib, NULL, BxOpcodeInfo64G2Ed }, /* C2 */ { BxImmediate_Iw, &BX_CPU_C::RETnear64_Iw }, /* C3 */ { 0, &BX_CPU_C::RETnear64 }, - /* C4 */ { BxAnother, &BX_CPU_C::LES_GvMp }, - /* C5 */ { BxAnother, &BX_CPU_C::LDS_GvMp }, + /* C4 */ { 0, &BX_CPU_C::BxError }, + /* C5 */ { 0, &BX_CPU_C::BxError }, /* C6 */ { BxAnother | BxImmediate_Ib, &BX_CPU_C::MOV_EbIb }, /* C7 */ { BxAnother | BxImmediate_Iv, &BX_CPU_C::MOV_EdId }, /* C8 */ { BxImmediate_IwIb, &BX_CPU_C::ENTER64_IwIb }, @@ -1184,15 +1186,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* CB */ { 0, &BX_CPU_C::RETfar64 }, /* CC */ { 0, &BX_CPU_C::INT3 }, /* CD */ { BxImmediate_Ib, &BX_CPU_C::INT_Ib }, - /* CE */ { 0, &BX_CPU_C::INTO }, + /* CE */ { 0, &BX_CPU_C::BxError }, /* CF */ { 0, &BX_CPU_C::IRET64 }, /* D0 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D1 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Ed }, /* D2 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D3 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Ed }, - /* D4 */ { BxImmediate_Ib, &BX_CPU_C::AAM }, - /* D5 */ { BxImmediate_Ib, &BX_CPU_C::AAD }, - /* D6 */ { 0, &BX_CPU_C::SALC }, + /* D4 */ { 0, &BX_CPU_C::BxError }, + /* D5 */ { 0, &BX_CPU_C::BxError }, + /* D6 */ { 0, &BX_CPU_C::BxError }, /* D7 */ { 0, &BX_CPU_C::XLAT }, /* D8 */ { BxAnother, &BX_CPU_C::ESC0 }, /* D9 */ { BxAnother, &BX_CPU_C::ESC1 }, @@ -1212,7 +1214,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* E7 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbeAX }, /* E8 */ { BxImmediate_BrOff32, &BX_CPU_C::CALL_Aq }, /* E9 */ { BxImmediate_BrOff32, &BX_CPU_C::JMP_Jq }, - /* EA */ { BxImmediate_IvIw, &BX_CPU_C::JMP_Ap }, + /* EA */ { 0, &BX_CPU_C::BxError }, /* EB */ { BxImmediate_BrOff8, &BX_CPU_C::JMP_Jq }, /* EC */ { 0, &BX_CPU_C::IN_ALDX }, /* ED */ { 0, &BX_CPU_C::IN_eAXDX }, @@ -1499,15 +1501,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 03 */ { BxAnother, &BX_CPU_C::ADD_GqEq }, /* 04 */ { BxImmediate_Ib, &BX_CPU_C::ADD_ALIb }, /* 05 */ { BxImmediate_Iv, &BX_CPU_C::ADD_RAXId }, - /* 06 */ { 0, &BX_CPU_C::PUSH64_ES }, - /* 07 */ { 0, &BX_CPU_C::POP64_ES }, + /* 06 */ { 0, &BX_CPU_C::BxError }, + /* 07 */ { 0, &BX_CPU_C::BxError }, /* 08 */ { BxAnother, &BX_CPU_C::OR_EbGb }, /* 09 */ { BxAnother, &BX_CPU_C::OR_EqGq }, /* 0A */ { BxAnother, &BX_CPU_C::OR_GbEb }, /* 0B */ { BxAnother, &BX_CPU_C::OR_GqEq }, /* 0C */ { BxImmediate_Ib, &BX_CPU_C::OR_ALIb }, /* 0D */ { BxImmediate_Iv, &BX_CPU_C::OR_RAXId }, - /* 0E */ { 0, &BX_CPU_C::PUSH64_CS }, + /* 0E */ { 0, &BX_CPU_C::BxError }, /* 0F */ { BxAnother, &BX_CPU_C::BxError }, // 2-byte escape /* 10 */ { BxAnother, &BX_CPU_C::ADC_EbGb }, /* 11 */ { BxAnother, &BX_CPU_C::ADC_EqGq }, @@ -1515,16 +1517,16 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 13 */ { BxAnother, &BX_CPU_C::ADC_GqEq }, /* 14 */ { BxImmediate_Ib, &BX_CPU_C::ADC_ALIb }, /* 15 */ { BxImmediate_Iv, &BX_CPU_C::ADC_RAXId }, - /* 16 */ { 0, &BX_CPU_C::PUSH64_SS }, - /* 17 */ { 0, &BX_CPU_C::POP64_SS }, + /* 16 */ { 0, &BX_CPU_C::BxError }, + /* 17 */ { 0, &BX_CPU_C::BxError }, /* 18 */ { BxAnother, &BX_CPU_C::SBB_EbGb }, /* 19 */ { BxAnother, &BX_CPU_C::SBB_EqGq }, /* 1A */ { BxAnother, &BX_CPU_C::SBB_GbEb }, /* 1B */ { BxAnother, &BX_CPU_C::SBB_GqEq }, /* 1C */ { BxImmediate_Ib, &BX_CPU_C::SBB_ALIb }, /* 1D */ { BxImmediate_Iv, &BX_CPU_C::SBB_RAXId }, - /* 1E */ { 0, &BX_CPU_C::PUSH64_DS }, - /* 1F */ { 0, &BX_CPU_C::POP64_DS }, + /* 1E */ { 0, &BX_CPU_C::BxError }, + /* 1F */ { 0, &BX_CPU_C::BxError }, /* 20 */ { BxAnother, &BX_CPU_C::AND_EbGb }, /* 21 */ { BxAnother, &BX_CPU_C::AND_EqGq }, /* 22 */ { BxAnother, &BX_CPU_C::AND_GbEb }, @@ -1532,7 +1534,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 24 */ { BxImmediate_Ib, &BX_CPU_C::AND_ALIb }, /* 25 */ { BxImmediate_Iv, &BX_CPU_C::AND_RAXId }, /* 26 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // ES: - /* 27 */ { 0, &BX_CPU_C::DAA }, + /* 27 */ { 0, &BX_CPU_C::BxError }, /* 28 */ { BxAnother, &BX_CPU_C::SUB_EbGb }, /* 29 */ { BxAnother, &BX_CPU_C::SUB_EqGq }, /* 2A */ { BxAnother, &BX_CPU_C::SUB_GbEb }, @@ -1540,7 +1542,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 2C */ { BxImmediate_Ib, &BX_CPU_C::SUB_ALIb }, /* 2D */ { BxImmediate_Iv, &BX_CPU_C::SUB_RAXId }, /* 2E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // CS: - /* 2F */ { 0, &BX_CPU_C::DAS }, + /* 2F */ { 0, &BX_CPU_C::BxError }, /* 30 */ { BxAnother, &BX_CPU_C::XOR_EbGb }, /* 31 */ { BxAnother, &BX_CPU_C::XOR_EqGq }, /* 32 */ { BxAnother, &BX_CPU_C::XOR_GbEb }, @@ -1548,7 +1550,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 34 */ { BxImmediate_Ib, &BX_CPU_C::XOR_ALIb }, /* 35 */ { BxImmediate_Iv, &BX_CPU_C::XOR_RAXId }, /* 36 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // SS: - /* 37 */ { 0, &BX_CPU_C::AAA }, + /* 37 */ { 0, &BX_CPU_C::BxError }, /* 38 */ { BxAnother, &BX_CPU_C::CMP_EbGb }, /* 39 */ { BxAnother, &BX_CPU_C::CMP_EqGq }, /* 3A */ { BxAnother, &BX_CPU_C::CMP_GbEb }, @@ -1556,7 +1558,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 3C */ { BxImmediate_Ib, &BX_CPU_C::CMP_ALIb }, /* 3D */ { BxImmediate_Iv, &BX_CPU_C::CMP_RAXId }, /* 3E */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // DS: - /* 3F */ { 0, &BX_CPU_C::AAS }, + /* 3F */ { 0, &BX_CPU_C::BxError }, /* 40 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 41 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: /* 42 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // REX: @@ -1589,9 +1591,9 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 5D */ { 0, &BX_CPU_C::POP_RRX }, /* 5E */ { 0, &BX_CPU_C::POP_RRX }, /* 5F */ { 0, &BX_CPU_C::POP_RRX }, - /* 60 */ { 0, &BX_CPU_C::PUSHAD64 }, - /* 61 */ { 0, &BX_CPU_C::POPAD64 }, - /* 62 */ { BxAnother, &BX_CPU_C::BOUND_GvMa }, + /* 60 */ { 0, &BX_CPU_C::BxError }, + /* 61 */ { 0, &BX_CPU_C::BxError }, + /* 62 */ { 0, &BX_CPU_C::BxError }, /* 63 */ { BxAnother, &BX_CPU_C::MOVSX_GqEd }, /* 64 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // FS: /* 65 */ { BxPrefix | BxAnother, &BX_CPU_C::BxError }, // GS: @@ -1623,7 +1625,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq }, /* 80 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, /* 81 */ { BxAnother | BxGroup1 | BxImmediate_Iv, NULL, BxOpcodeInfo64G1Eq }, - /* 82 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb }, + /* 82 */ { 0, &BX_CPU_C::BxError }, /* 83 */ { BxAnother | BxGroup1 | BxImmediate_Ib_SE, NULL, BxOpcodeInfo64G1Eq }, /* 84 */ { BxAnother, &BX_CPU_C::TEST_EbGb }, /* 85 */ { BxAnother, &BX_CPU_C::TEST_EqGq }, @@ -1647,12 +1649,12 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* 97 */ { 0, &BX_CPU_C::XCHG_RRXRAX }, /* 98 */ { 0, &BX_CPU_C::CDQE }, /* 99 */ { 0, &BX_CPU_C::CQO }, - /* 9A */ { BxImmediate_IvIw, &BX_CPU_C::CALL64_Ap }, + /* 9A */ { 0, &BX_CPU_C::BxError }, /* 9B */ { 0, &BX_CPU_C::FWAIT }, /* 9C */ { 0, &BX_CPU_C::PUSHF_Fv }, /* 9D */ { 0, &BX_CPU_C::POPF_Fv }, - /* 9E */ { 0, &BX_CPU_C::SAHF }, - /* 9F */ { 0, &BX_CPU_C::LAHF }, + /* 9E */ { 0, &BX_CPU_C::BxError }, + /* 9F */ { 0, &BX_CPU_C::BxError }, /* A0 */ { BxImmediate_Oq, &BX_CPU_C::MOV_ALOq }, /* A1 */ { BxImmediate_Oq, &BX_CPU_C::MOV_RAXOq }, /* A2 */ { BxImmediate_Oq, &BX_CPU_C::MOV_OqAL }, @@ -1689,8 +1691,8 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* C1 */ { BxAnother | BxGroup2 | BxImmediate_Ib, NULL, BxOpcodeInfo64G2Eq }, /* C2 */ { BxImmediate_Iw, &BX_CPU_C::RETnear64_Iw }, /* C3 */ { 0, &BX_CPU_C::RETnear64 }, - /* C4 */ { BxAnother, &BX_CPU_C::LES_GvMp }, - /* C5 */ { BxAnother, &BX_CPU_C::LDS_GvMp }, + /* C4 */ { 0, &BX_CPU_C::BxError }, + /* C5 */ { 0, &BX_CPU_C::BxError }, /* C6 */ { BxAnother | BxImmediate_Ib, &BX_CPU_C::MOV_EbIb }, /* C7 */ { BxAnother | BxImmediate_Iv, &BX_CPU_C::MOV_EqId }, /* C8 */ { BxImmediate_IwIb, &BX_CPU_C::ENTER64_IwIb }, @@ -1699,15 +1701,15 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* CB */ { 0, &BX_CPU_C::RETfar64 }, /* CC */ { 0, &BX_CPU_C::INT3 }, /* CD */ { BxImmediate_Ib, &BX_CPU_C::INT_Ib }, - /* CE */ { 0, &BX_CPU_C::INTO }, + /* CE */ { 0, &BX_CPU_C::BxError }, /* CF */ { 0, &BX_CPU_C::IRET64 }, /* D0 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D1 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eq }, /* D2 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eb }, /* D3 */ { BxAnother | BxGroup2, NULL, BxOpcodeInfo64G2Eq }, - /* D4 */ { BxImmediate_Ib, &BX_CPU_C::AAM }, - /* D5 */ { BxImmediate_Ib, &BX_CPU_C::AAD }, - /* D6 */ { 0, &BX_CPU_C::SALC }, + /* D4 */ { 0, &BX_CPU_C::BxError }, + /* D5 */ { 0, &BX_CPU_C::BxError }, + /* D6 */ { 0, &BX_CPU_C::BxError }, /* D7 */ { 0, &BX_CPU_C::XLAT }, /* D8 */ { BxAnother, &BX_CPU_C::ESC0 }, /* D9 */ { BxAnother, &BX_CPU_C::ESC1 }, @@ -1727,7 +1729,7 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = { /* E7 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbeAX }, /* E8 */ { BxImmediate_BrOff32, &BX_CPU_C::CALL_Aq }, /* E9 */ { BxImmediate_BrOff32, &BX_CPU_C::JMP_Jq }, - /* EA */ { BxImmediate_IvIw, &BX_CPU_C::JMP_Ap }, + /* EA */ { 0, &BX_CPU_C::BxError }, /* EB */ { BxImmediate_BrOff8, &BX_CPU_C::JMP_Jq }, /* EC */ { 0, &BX_CPU_C::IN_ALDX }, /* ED */ { 0, &BX_CPU_C::IN_eAXDX },