- from Peter Tattam: fixed invalid instructions for 64 bit mode
This commit is contained in:
parent
17f873abc3
commit
6b5192d98a
@ -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 },
|
||||
|
Loading…
Reference in New Issue
Block a user