mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
[FAST486]
Don't mix up ADSIZE and OPSIZE (continued). svn path=/branches/ntvdm/; revision=60927
This commit is contained in:
parent
a2f3c339f4
commit
9677ec13ad
1 changed files with 49 additions and 20 deletions
|
@ -5133,15 +5133,15 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeJmpAbs)
|
||||||
|
|
||||||
FAST486_OPCODE_HANDLER(Fast486OpcodeMovAlOffset)
|
FAST486_OPCODE_HANDLER(Fast486OpcodeMovAlOffset)
|
||||||
{
|
{
|
||||||
BOOLEAN Size = State->SegmentRegs[FAST486_REG_CS].Size;
|
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||||
ULONG Offset;
|
ULONG Offset;
|
||||||
|
|
||||||
/* Make sure this is the right instruction */
|
/* Make sure this is the right instruction */
|
||||||
ASSERT(Opcode == 0xA0);
|
ASSERT(Opcode == 0xA0);
|
||||||
|
|
||||||
TOGGLE_OPSIZE(Size);
|
TOGGLE_ADSIZE(AddressSize);
|
||||||
|
|
||||||
if (Size)
|
if (AddressSize)
|
||||||
{
|
{
|
||||||
if (!Fast486FetchDword(State, &Offset))
|
if (!Fast486FetchDword(State, &Offset))
|
||||||
{
|
{
|
||||||
|
@ -5174,14 +5174,17 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovAlOffset)
|
||||||
|
|
||||||
FAST486_OPCODE_HANDLER(Fast486OpcodeMovEaxOffset)
|
FAST486_OPCODE_HANDLER(Fast486OpcodeMovEaxOffset)
|
||||||
{
|
{
|
||||||
BOOLEAN Size = State->SegmentRegs[FAST486_REG_CS].Size;
|
BOOLEAN OperandSize, AddressSize;
|
||||||
|
|
||||||
|
OperandSize = AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||||
|
|
||||||
/* Make sure this is the right instruction */
|
/* Make sure this is the right instruction */
|
||||||
ASSERT(Opcode == 0xA1);
|
ASSERT(Opcode == 0xA1);
|
||||||
|
|
||||||
TOGGLE_OPSIZE(Size);
|
TOGGLE_OPSIZE(OperandSize);
|
||||||
|
TOGGLE_ADSIZE(AddressSize);
|
||||||
|
|
||||||
if (Size)
|
if (AddressSize)
|
||||||
{
|
{
|
||||||
ULONG Offset;
|
ULONG Offset;
|
||||||
|
|
||||||
|
@ -5192,13 +5195,26 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovEaxOffset)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read from memory */
|
/* Read from memory */
|
||||||
return Fast486ReadMemory(State,
|
if (OperandSize)
|
||||||
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
{
|
||||||
State->SegmentOverride : FAST486_REG_DS,
|
return Fast486ReadMemory(State,
|
||||||
Offset,
|
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
||||||
FALSE,
|
State->SegmentOverride : FAST486_REG_DS,
|
||||||
&State->GeneralRegs[FAST486_REG_EAX].Long,
|
Offset,
|
||||||
sizeof(ULONG));
|
FALSE,
|
||||||
|
&State->GeneralRegs[FAST486_REG_EAX].Long,
|
||||||
|
sizeof(ULONG));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Fast486ReadMemory(State,
|
||||||
|
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
||||||
|
State->SegmentOverride : FAST486_REG_DS,
|
||||||
|
Offset,
|
||||||
|
FALSE,
|
||||||
|
&State->GeneralRegs[FAST486_REG_EAX].LowWord,
|
||||||
|
sizeof(USHORT));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -5211,13 +5227,26 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovEaxOffset)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read from memory */
|
/* Read from memory */
|
||||||
return Fast486ReadMemory(State,
|
if (OperandSize)
|
||||||
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
{
|
||||||
State->SegmentOverride : FAST486_REG_DS,
|
return Fast486ReadMemory(State,
|
||||||
Offset,
|
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
||||||
FALSE,
|
State->SegmentOverride : FAST486_REG_DS,
|
||||||
&State->GeneralRegs[FAST486_REG_EAX].LowWord,
|
Offset,
|
||||||
sizeof(USHORT));
|
FALSE,
|
||||||
|
&State->GeneralRegs[FAST486_REG_EAX].Long,
|
||||||
|
sizeof(ULONG));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Fast486ReadMemory(State,
|
||||||
|
(State->PrefixFlags & FAST486_PREFIX_SEG) ?
|
||||||
|
State->SegmentOverride : FAST486_REG_DS,
|
||||||
|
Offset,
|
||||||
|
FALSE,
|
||||||
|
&State->GeneralRegs[FAST486_REG_EAX].LowWord,
|
||||||
|
sizeof(USHORT));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue