Got rid of the KPL64Hacks macro. The fixes below eliminated it.
Created 64-bit versions of some branch instructions and changed fetchdecode64.cc to use them instead. This keeps the #ifdef pollution down for 32-bit code and made fixing them easier. They needed to clear the upper bits of RIP for 16-bit operand sizes. They also should not have had a protection limit check in them, especially since that field is still 32-bit in cpu.h, so there's no way to set nominal 64-bit values. The 32-bit versions were also not honoring the upper 32-bits of RIP. LOOPNE64_Jb LOOPE64_Jb LOOP64_Jb JCXZ64_Jb Changed all occurances of JCC_Jw/JCC_Jd in fetchdecode64.cc to use JCC_Jq, which was coded already. Both JMP_Jq and JCC_Jq are now fixed w.r.t. 16-bit opsizes and upper RIP bit clearing.
This commit is contained in:
parent
5bfd2c669e
commit
47f2e7c404
@ -608,9 +608,6 @@ typedef
|
||||
// soon and there is no configure option for them (on purpose).
|
||||
// By default, they are not compiled in.
|
||||
|
||||
// Set this to 1 if you want to try my 64-bit hacks to get Linux booting.
|
||||
#define KPL64Hacks 0
|
||||
|
||||
// I set this to 1 to bail in instructions which may not be honoring
|
||||
// the 64-bit widths of RIP/RSP. If I trip a panic, then I clean
|
||||
// the function up and remove the panic. You don't have to use
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.82 2002-09-26 21:32:25 kevinlawton Exp $
|
||||
// $Id: cpu.h,v 1.83 2002-09-27 07:01:01 kevinlawton Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -2236,6 +2236,10 @@ union {
|
||||
|
||||
BX_SMF void SWAPGS(bxInstruction_c *i);
|
||||
|
||||
BX_SMF void LOOPNE64_Jb(bxInstruction_c *);
|
||||
BX_SMF void LOOPE64_Jb(bxInstruction_c *);
|
||||
BX_SMF void LOOP64_Jb(bxInstruction_c *);
|
||||
BX_SMF void JCXZ64_Jb(bxInstruction_c *);
|
||||
#endif // #if BX_SUPPORT_X86_64
|
||||
|
||||
// mch added
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: ctrl_xfer32.cc,v 1.18 2002-09-24 00:44:55 kevinlawton Exp $
|
||||
// $Id: ctrl_xfer32.cc,v 1.19 2002-09-27 07:01:02 kevinlawton Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -405,31 +405,21 @@ BX_CPU_C::JCC_Jd(bxInstruction_c *i)
|
||||
}
|
||||
|
||||
if (condition) {
|
||||
#if BX_SUPPORT_X86_64
|
||||
#if KPL64Hacks
|
||||
if (BX_CPU_THIS_PTR cpu_mode == BX_MODE_LONG_64) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
BailBigRSP("JCC_Jd");
|
||||
Bit32u new_EIP;
|
||||
Bit32u new_EIP;
|
||||
|
||||
new_EIP = EIP + (Bit32s) i->Id();
|
||||
new_EIP = EIP + (Bit32s) i->Id();
|
||||
#if BX_CPU_LEVEL >= 2
|
||||
if (protected_mode()) {
|
||||
if ( new_EIP >
|
||||
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.limit_scaled )
|
||||
{
|
||||
BX_PANIC(("jo_routine: offset outside of CS limits"));
|
||||
exception(BX_GP_EXCEPTION, 0, 0);
|
||||
}
|
||||
if (protected_mode()) {
|
||||
if ( new_EIP >
|
||||
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.limit_scaled )
|
||||
{
|
||||
BX_PANIC(("jo_routine: offset outside of CS limits"));
|
||||
exception(BX_GP_EXCEPTION, 0, 0);
|
||||
}
|
||||
#endif
|
||||
EIP = new_EIP;
|
||||
}
|
||||
#endif
|
||||
EIP = new_EIP;
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_EIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: ctrl_xfer64.cc,v 1.13 2002-09-26 22:34:06 kevinlawton Exp $
|
||||
// $Id: ctrl_xfer64.cc,v 1.14 2002-09-27 07:01:02 kevinlawton Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -289,12 +289,8 @@ BX_CPU_C::JMP_Jq(bxInstruction_c *i)
|
||||
invalidate_prefetch_q();
|
||||
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0) {
|
||||
// For 16-bit opSize, upper bits of RIP are cleared, as in
|
||||
// 32-bit counterpart JMP_Jd.
|
||||
BX_CPU_THIS_PTR dword.rip_upper = 0;
|
||||
BX_CPU_THIS_PTR dword.eip &= 0x0000ffff;
|
||||
}
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_UCNEAR_BRANCH(BX_INSTR_IS_JMP, new_RIP);
|
||||
}
|
||||
|
||||
@ -331,6 +327,8 @@ BX_CPU_C::JCC_Jq(bxInstruction_c *i)
|
||||
if (condition) {
|
||||
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(RIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
@ -451,3 +449,141 @@ done:
|
||||
BX_INSTR_FAR_BRANCH(BX_INSTR_IS_IRET,
|
||||
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].selector.value, BX_CPU_THIS_PTR rip);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BX_CPU_C::JCXZ64_Jb(bxInstruction_c *i)
|
||||
{
|
||||
if (i->as64L()) {
|
||||
if ( RCX == 0 ) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_RIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
if ( ECX == 0 ) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_EIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
BX_CPU_C::LOOPNE64_Jb(bxInstruction_c *i)
|
||||
{
|
||||
if (i->as64L()) {
|
||||
|
||||
if ( ((--RCX)!=0) && (get_ZF()==0) ) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(RIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
if ( ((--ECX)!=0) && (get_ZF()==0) ) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_EIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
BX_CPU_C::LOOPE64_Jb(bxInstruction_c *i)
|
||||
{
|
||||
if (i->as64L()) {
|
||||
|
||||
if ( ((--RCX)!=0) && (get_ZF()) ) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(RIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
if ( ((--ECX)!=0) && get_ZF()) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_EIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
BX_CPU_C::LOOP64_Jb(bxInstruction_c *i)
|
||||
{
|
||||
if (i->as64L()) {
|
||||
|
||||
if ((--RCX) != 0) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(RIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
if ((--ECX) != 0) {
|
||||
RIP += (Bit32s) i->Id();
|
||||
if (i->os32L()==0)
|
||||
RIP &= 0xffff; // For 16-bit opSize, upper 48 bits of RIP are cleared.
|
||||
BX_INSTR_CNEAR_BRANCH_TAKEN(new_EIP);
|
||||
revalidate_prefetch_q();
|
||||
}
|
||||
#if BX_INSTRUMENTATION
|
||||
else {
|
||||
BX_INSTR_CNEAR_BRANCH_NOT_TAKEN();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode64.cc,v 1.15 2002-09-26 21:32:26 kevinlawton Exp $
|
||||
// $Id: fetchdecode64.cc,v 1.16 2002-09-27 07:01:02 kevinlawton Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -576,22 +576,22 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* 6D */ { BxRepeatable, &BX_CPU_C::INSW_YvDX },
|
||||
/* 6E */ { BxRepeatable, &BX_CPU_C::OUTSB_DXXb },
|
||||
/* 6F */ { BxRepeatable, &BX_CPU_C::OUTSW_DXXv },
|
||||
/* 70 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 71 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 72 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 73 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 74 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 75 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 76 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 77 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 78 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 79 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7A */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7B */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7C */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7D */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7E */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jw },
|
||||
/* 70 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 71 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 72 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 73 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 74 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 75 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 76 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 77 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 78 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 79 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7A */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7B */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7C */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7D */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7E */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 80 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb },
|
||||
/* 81 */ { BxAnother | BxGroup1 | BxImmediate_Iv, NULL, BxOpcodeInfo64G1Ew },
|
||||
/* 82 */ { 0, &BX_CPU_C::BxError },
|
||||
@ -688,10 +688,10 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* DD */ { BxAnother, &BX_CPU_C::ESC5 },
|
||||
/* DE */ { BxAnother, &BX_CPU_C::ESC6 },
|
||||
/* DF */ { BxAnother, &BX_CPU_C::ESC7 },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ_Jb },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE64_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE64_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP64_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ64_Jb },
|
||||
/* E4 */ { BxImmediate_Ib, &BX_CPU_C::IN_ALIb },
|
||||
/* E5 */ { BxImmediate_Ib, &BX_CPU_C::IN_eAXIb },
|
||||
/* E6 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbAL },
|
||||
@ -849,22 +849,22 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* 0F 7D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 7E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 7F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 80 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 81 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 82 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 83 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 84 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 85 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 86 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 87 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 88 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 89 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8A */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8B */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8C */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8D */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8E */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 8F */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jw },
|
||||
/* 0F 80 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 81 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 82 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 83 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 84 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 85 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 86 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 87 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 88 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 89 */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8A */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8B */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8C */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8D */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8E */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8F */ { BxImmediate_BrOff16, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 90 */ { BxAnother, &BX_CPU_C::SETO_Eb },
|
||||
/* 0F 91 */ { BxAnother, &BX_CPU_C::SETNO_Eb },
|
||||
/* 0F 92 */ { BxAnother, &BX_CPU_C::SETB_Eb },
|
||||
@ -1092,22 +1092,22 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* 6D */ { BxRepeatable, &BX_CPU_C::INSW_YvDX },
|
||||
/* 6E */ { BxRepeatable, &BX_CPU_C::OUTSB_DXXb },
|
||||
/* 6F */ { BxRepeatable, &BX_CPU_C::OUTSW_DXXv },
|
||||
/* 70 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 71 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 72 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 73 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 74 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 75 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 76 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 77 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 78 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 79 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7A */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7B */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7C */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7D */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7E */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jd },
|
||||
/* 70 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 71 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 72 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 73 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 74 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 75 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 76 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 77 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 78 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 79 */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7A */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7B */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7C */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7D */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7E */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 7F */ { BxImmediate_BrOff8, &BX_CPU_C::JCC_Jq },
|
||||
/* 80 */ { BxAnother | BxGroup1, NULL, BxOpcodeInfo64G1EbIb },
|
||||
/* 81 */ { BxAnother | BxGroup1 | BxImmediate_Iv, NULL, BxOpcodeInfo64G1Ed },
|
||||
/* 82 */ { 0, &BX_CPU_C::BxError },
|
||||
@ -1204,10 +1204,10 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* DD */ { BxAnother, &BX_CPU_C::ESC5 },
|
||||
/* DE */ { BxAnother, &BX_CPU_C::ESC6 },
|
||||
/* DF */ { BxAnother, &BX_CPU_C::ESC7 },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ_Jb },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE64_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE64_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP64_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ64_Jb },
|
||||
/* E4 */ { BxImmediate_Ib, &BX_CPU_C::IN_ALIb },
|
||||
/* E5 */ { BxImmediate_Ib, &BX_CPU_C::IN_eAXIb },
|
||||
/* E6 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbAL },
|
||||
@ -1365,22 +1365,22 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* 0F 7D */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 7E */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 7F */ { 0, &BX_CPU_C::BxError },
|
||||
/* 0F 80 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 81 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 82 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 83 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 84 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 85 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 86 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 87 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 88 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 89 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8A */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8B */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8C */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8D */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8E */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 8F */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jd },
|
||||
/* 0F 80 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 81 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 82 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 83 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 84 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 85 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 86 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 87 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 88 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 89 */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8A */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8B */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8C */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8D */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8E */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 8F */ { BxImmediate_BrOff32, &BX_CPU_C::JCC_Jq },
|
||||
/* 0F 90 */ { BxAnother, &BX_CPU_C::SETO_Eb },
|
||||
/* 0F 91 */ { BxAnother, &BX_CPU_C::SETNO_Eb },
|
||||
/* 0F 92 */ { BxAnother, &BX_CPU_C::SETB_Eb },
|
||||
@ -1719,10 +1719,10 @@ static BxOpcodeInfo_t BxOpcodeInfo64[512*3] = {
|
||||
/* DD */ { BxAnother, &BX_CPU_C::ESC5 },
|
||||
/* DE */ { BxAnother, &BX_CPU_C::ESC6 },
|
||||
/* DF */ { BxAnother, &BX_CPU_C::ESC7 },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ_Jb },
|
||||
/* E0 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPNE64_Jb },
|
||||
/* E1 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOPE64_Jb },
|
||||
/* E2 */ { BxImmediate_BrOff8, &BX_CPU_C::LOOP64_Jb },
|
||||
/* E3 */ { BxImmediate_BrOff8, &BX_CPU_C::JCXZ64_Jb },
|
||||
/* E4 */ { BxImmediate_Ib, &BX_CPU_C::IN_ALIb },
|
||||
/* E5 */ { BxImmediate_Ib, &BX_CPU_C::IN_eAXIb },
|
||||
/* E6 */ { BxImmediate_Ib, &BX_CPU_C::OUT_IbAL },
|
||||
|
Loading…
x
Reference in New Issue
Block a user