mirror of
https://github.com/reactos/reactos.git
synced 2025-04-18 03:34:11 +00:00
[FAST486]
Make the parameters to Fast486ReadModrm*Operands optional, so that unnecessary extra reads aren't performed. This also eliminates the need for dummy variables. svn path=/branches/ntvdm/; revision=61055
This commit is contained in:
parent
8998a96d56
commit
b456a8b355
4 changed files with 175 additions and 159 deletions
|
@ -935,51 +935,57 @@ Fast486ReadModrmByteOperands(PFAST486_STATE State,
|
|||
{
|
||||
FAST486_SEG_REGS Segment = FAST486_REG_DS;
|
||||
|
||||
/* Get the register value */
|
||||
if (ModRegRm->Register & 0x04)
|
||||
if (RegValue)
|
||||
{
|
||||
/* AH, CH, DH, BH */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register & 0x03].HighByte;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* AL, CL, DL, BL */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register & 0x03].LowByte;
|
||||
}
|
||||
|
||||
if (!ModRegRm->Memory)
|
||||
{
|
||||
/* Get the second register value */
|
||||
if (ModRegRm->SecondRegister & 0x04)
|
||||
/* Get the register value */
|
||||
if (ModRegRm->Register & 0x04)
|
||||
{
|
||||
/* AH, CH, DH, BH */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister & 0x03].HighByte;
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register & 0x03].HighByte;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* AL, CL, DL, BL */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister & 0x03].LowByte;
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register & 0x03].LowByte;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(UCHAR)))
|
||||
if (RmValue)
|
||||
{
|
||||
if (!ModRegRm->Memory)
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
/* Get the second register value */
|
||||
if (ModRegRm->SecondRegister & 0x04)
|
||||
{
|
||||
/* AH, CH, DH, BH */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister & 0x03].HighByte;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* AL, CL, DL, BL */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister & 0x03].LowByte;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(UCHAR)))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -995,33 +1001,39 @@ Fast486ReadModrmWordOperands(PFAST486_STATE State,
|
|||
{
|
||||
FAST486_SEG_REGS Segment = FAST486_REG_DS;
|
||||
|
||||
/* Get the register value */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register].LowWord;
|
||||
|
||||
if (!ModRegRm->Memory)
|
||||
if (RegValue)
|
||||
{
|
||||
/* Get the second register value */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister].LowWord;
|
||||
/* Get the register value */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register].LowWord;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(USHORT)))
|
||||
if (RmValue)
|
||||
{
|
||||
if (!ModRegRm->Memory)
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
/* Get the second register value */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister].LowWord;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(USHORT)))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1037,33 +1049,39 @@ Fast486ReadModrmDwordOperands(PFAST486_STATE State,
|
|||
{
|
||||
FAST486_SEG_REGS Segment = FAST486_REG_DS;
|
||||
|
||||
/* Get the register value */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register].Long;
|
||||
|
||||
if (!ModRegRm->Memory)
|
||||
if (RegValue)
|
||||
{
|
||||
/* Get the second register value */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister].Long;
|
||||
/* Get the register value */
|
||||
*RegValue = State->GeneralRegs[ModRegRm->Register].Long;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(ULONG)))
|
||||
if (RmValue)
|
||||
{
|
||||
if (!ModRegRm->Memory)
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
/* Get the second register value */
|
||||
*RmValue = State->GeneralRegs[ModRegRm->SecondRegister].Long;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check for the segment override */
|
||||
if (State->PrefixFlags & FAST486_PREFIX_SEG)
|
||||
{
|
||||
/* Use the override segment instead */
|
||||
Segment = State->SegmentOverride;
|
||||
}
|
||||
|
||||
/* Read memory */
|
||||
if (!Fast486ReadMemory(State,
|
||||
Segment,
|
||||
ModRegRm->MemoryAddress,
|
||||
FALSE,
|
||||
RmValue,
|
||||
sizeof(ULONG)))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -570,10 +570,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBitTest)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -584,10 +584,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBitTest)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -755,10 +755,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBts)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -779,10 +779,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBts)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1216,10 +1216,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtr)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1240,10 +1240,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtr)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1339,7 +1339,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeLfsLgs)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovzxByte)
|
||||
{
|
||||
UCHAR Dummy, Value;
|
||||
UCHAR Value;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
|
||||
|
@ -1356,7 +1356,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovzxByte)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1371,7 +1371,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovzxByte)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovzxWord)
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
|
||||
|
@ -1388,7 +1388,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovzxWord)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1441,10 +1441,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtc)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1465,10 +1465,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtc)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1495,7 +1495,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtc)
|
|||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsf)
|
||||
{
|
||||
INT i;
|
||||
ULONG Dummy = 0, Value = 0;
|
||||
ULONG Value = 0;
|
||||
BOOLEAN OperandSize, AddressSize;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
ULONG BitNumber;
|
||||
|
@ -1522,7 +1522,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsf)
|
|||
/* Read the value */
|
||||
if (OperandSize)
|
||||
{
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1532,7 +1532,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsf)
|
|||
{
|
||||
if (!Fast486ReadModrmWordOperands(State,
|
||||
&ModRegRm,
|
||||
(PUSHORT)&Dummy,
|
||||
(PUSHORT)NULL,
|
||||
(PUSHORT)&Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
|
@ -1580,7 +1580,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsf)
|
|||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsr)
|
||||
{
|
||||
INT i;
|
||||
ULONG Dummy = 0, Value = 0;
|
||||
ULONG Value = 0;
|
||||
BOOLEAN OperandSize, AddressSize;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
ULONG BitNumber;
|
||||
|
@ -1607,7 +1607,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsr)
|
|||
/* Read the value */
|
||||
if (OperandSize)
|
||||
{
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1617,7 +1617,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsr)
|
|||
{
|
||||
if (!Fast486ReadModrmWordOperands(State,
|
||||
&ModRegRm,
|
||||
(PUSHORT)&Dummy,
|
||||
(PUSHORT)NULL,
|
||||
(PUSHORT)&Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
|
@ -1664,7 +1664,6 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBsr)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovsxByte)
|
||||
{
|
||||
UCHAR Dummy;
|
||||
CHAR Value;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
|
@ -1682,7 +1681,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovsxByte)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, (PUCHAR)&Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, (PUCHAR)&Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1697,7 +1696,6 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovsxByte)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovsxWord)
|
||||
{
|
||||
USHORT Dummy;
|
||||
SHORT Value;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
|
@ -1715,7 +1713,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeMovsxWord)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, (PUSHORT)&Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, (PUSHORT)&Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
|
|
@ -3951,9 +3951,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovLoadSeg)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Selector;
|
||||
ULONG Selector;
|
||||
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Selector))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Selector))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -3963,9 +3963,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovLoadSeg)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Selector;
|
||||
USHORT Selector;
|
||||
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Selector))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Selector))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
|
|
@ -293,7 +293,7 @@ Fast486RotateOperation(PFAST486_STATE State,
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroup8082)
|
||||
{
|
||||
UCHAR Immediate, Dummy, Value;
|
||||
UCHAR Immediate, Value;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -313,7 +313,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup8082)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -349,7 +349,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup81)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Immediate, Value, Dummy;
|
||||
ULONG Immediate, Value;
|
||||
|
||||
/* Fetch the immediate operand */
|
||||
if (!Fast486FetchDword(State, &Immediate))
|
||||
|
@ -359,7 +359,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup81)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -376,7 +376,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup81)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Immediate, Value, Dummy;
|
||||
USHORT Immediate, Value;
|
||||
|
||||
/* Fetch the immediate operand */
|
||||
if (!Fast486FetchWord(State, &Immediate))
|
||||
|
@ -386,7 +386,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup81)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -432,10 +432,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup83)
|
|||
if (OperandSize)
|
||||
{
|
||||
ULONG Immediate = (ULONG)((LONG)ImmByte); // Sign extend
|
||||
ULONG Value, Dummy;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -453,10 +453,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup83)
|
|||
else
|
||||
{
|
||||
USHORT Immediate = (USHORT)((SHORT)ImmByte); // Sign extend
|
||||
USHORT Value, Dummy;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -527,7 +527,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup8F)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupC0)
|
||||
{
|
||||
UCHAR Dummy, Value, Count;
|
||||
UCHAR Value, Count;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -547,7 +547,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupC0)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -593,10 +593,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupC1)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -614,10 +614,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupC1)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -728,7 +728,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupC7)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD0)
|
||||
{
|
||||
UCHAR Dummy, Value;
|
||||
UCHAR Value;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -741,7 +741,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD0)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -776,10 +776,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD1)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -793,10 +793,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD1)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -812,7 +812,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD1)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD2)
|
||||
{
|
||||
UCHAR Dummy, Value;
|
||||
UCHAR Value;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -825,7 +825,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD2)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -863,10 +863,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD3)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -884,10 +884,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD3)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -907,7 +907,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupD3)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF6)
|
||||
{
|
||||
UCHAR Dummy, Value = 0;
|
||||
UCHAR Value = 0;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -920,7 +920,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF6)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1039,7 +1039,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF6)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7)
|
||||
{
|
||||
ULONG Dummy, Value = 0, SignFlag;
|
||||
ULONG Value = 0, SignFlag;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN OperandSize, AddressSize;
|
||||
|
||||
|
@ -1062,7 +1062,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7)
|
|||
if (OperandSize)
|
||||
{
|
||||
/* 32-bit */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1071,7 +1071,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7)
|
|||
else
|
||||
{
|
||||
/* 16-bit */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, (PUSHORT)&Dummy, (PUSHORT)&Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, (PUSHORT)&Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1284,7 +1284,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7)
|
|||
|
||||
FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFE)
|
||||
{
|
||||
UCHAR Dummy, Value;
|
||||
UCHAR Value;
|
||||
FAST486_MOD_REG_RM ModRegRm;
|
||||
BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;
|
||||
|
||||
|
@ -1304,7 +1304,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFE)
|
|||
}
|
||||
|
||||
/* Read the operands */
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmByteOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1363,9 +1363,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFF)
|
|||
/* Read the operands */
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1506,9 +1506,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupFF)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1813,7 +1813,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F01)
|
|||
/* LMSW */
|
||||
case 6:
|
||||
{
|
||||
USHORT MachineStatusWord, Dummy;
|
||||
USHORT MachineStatusWord;
|
||||
|
||||
/* This is a privileged instruction */
|
||||
if (Fast486GetCurrentPrivLevel(State) != 0)
|
||||
|
@ -1823,7 +1823,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F01)
|
|||
}
|
||||
|
||||
/* Read the new Machine Status Word */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &MachineStatusWord))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &MachineStatusWord))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1928,10 +1928,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0FBA)
|
|||
|
||||
if (OperandSize)
|
||||
{
|
||||
ULONG Dummy, Value;
|
||||
ULONG Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmDwordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
@ -1968,10 +1968,10 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0FBA)
|
|||
}
|
||||
else
|
||||
{
|
||||
USHORT Dummy, Value;
|
||||
USHORT Value;
|
||||
|
||||
/* Read the value */
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, &Dummy, &Value))
|
||||
if (!Fast486ReadModrmWordOperands(State, &ModRegRm, NULL, &Value))
|
||||
{
|
||||
/* Exception occurred */
|
||||
return FALSE;
|
||||
|
|
Loading…
Reference in a new issue