[FAST486]

LOOP and JECXZ use the ADSIZE attribute, not OPSIZE.


svn path=/branches/ntvdm/; revision=60977
This commit is contained in:
Aleksandar Andrejevic 2013-11-13 19:20:04 +00:00
parent ace025dca9
commit 53dfb7da48

View file

@ -4929,7 +4929,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeLoop)
ASSERT((Opcode >= 0xE0) && (Opcode <= 0xE2));
NO_LOCK_PREFIX();
TOGGLE_OPSIZE(Size);
TOGGLE_ADSIZE(Size);
if (Size) Condition = ((--State->GeneralRegs[FAST486_REG_ECX].Long) != 0);
else Condition = ((--State->GeneralRegs[FAST486_REG_ECX].LowWord) != 0);
@ -4956,7 +4956,8 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeLoop)
if (Condition)
{
/* Move the instruction pointer */
State->InstPtr.Long += Offset;
if (Size) State->InstPtr.Long += Offset;
else State->InstPtr.LowWord += Offset;
}
return TRUE;
@ -4972,7 +4973,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeJecxz)
ASSERT(Opcode == 0xE3);
NO_LOCK_PREFIX();
TOGGLE_OPSIZE(Size);
TOGGLE_ADSIZE(Size);
if (Size) Condition = (State->GeneralRegs[FAST486_REG_ECX].Long == 0);
else Condition = (State->GeneralRegs[FAST486_REG_ECX].LowWord == 0);
@ -4987,7 +4988,8 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeJecxz)
if (Condition)
{
/* Move the instruction pointer */
State->InstPtr.Long += Offset;
if (Size) State->InstPtr.Long += Offset;
else State->InstPtr.LowWord += Offset;
}
return TRUE;