mirror of
https://github.com/reactos/reactos.git
synced 2025-01-01 03:54:02 +00:00
[FAST486]
Apparently MOVS, LODS, STOS, INS and OUTS can also take REPNZ as a prefix. svn path=/trunk/; revision=64428
This commit is contained in:
parent
89722b00b4
commit
87ad3a5ac5
1 changed files with 6 additions and 6 deletions
|
@ -5469,7 +5469,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovs)
|
||||||
Segment = State->SegmentOverride;
|
Segment = State->SegmentOverride;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
if ((AddressSize && (State->GeneralRegs[FAST486_REG_ECX].Long == 0))
|
if ((AddressSize && (State->GeneralRegs[FAST486_REG_ECX].Long == 0))
|
||||||
|| (!AddressSize && (State->GeneralRegs[FAST486_REG_ECX].LowWord == 0)))
|
|| (!AddressSize && (State->GeneralRegs[FAST486_REG_ECX].LowWord == 0)))
|
||||||
|
@ -5537,7 +5537,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeMovs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: This method is slow!
|
// FIXME: This method is slow!
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
if (AddressSize)
|
if (AddressSize)
|
||||||
{
|
{
|
||||||
|
@ -5727,7 +5727,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeStos)
|
||||||
if (Opcode == 0xAA) DataSize = sizeof(UCHAR);
|
if (Opcode == 0xAA) DataSize = sizeof(UCHAR);
|
||||||
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
||||||
|
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
UCHAR Block[STRING_BLOCK_SIZE];
|
UCHAR Block[STRING_BLOCK_SIZE];
|
||||||
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
||||||
|
@ -5870,7 +5870,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeLods)
|
||||||
if (Opcode == 0xAC) DataSize = sizeof(UCHAR);
|
if (Opcode == 0xAC) DataSize = sizeof(UCHAR);
|
||||||
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
||||||
|
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
||||||
: State->GeneralRegs[FAST486_REG_ECX].LowWord;
|
: State->GeneralRegs[FAST486_REG_ECX].LowWord;
|
||||||
|
@ -6056,7 +6056,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeIns)
|
||||||
if (Opcode == 0x6C) DataSize = sizeof(UCHAR);
|
if (Opcode == 0x6C) DataSize = sizeof(UCHAR);
|
||||||
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
||||||
|
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
UCHAR Block[STRING_BLOCK_SIZE];
|
UCHAR Block[STRING_BLOCK_SIZE];
|
||||||
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
||||||
|
@ -6197,7 +6197,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeOuts)
|
||||||
if (Opcode == 0x6E) DataSize = sizeof(UCHAR);
|
if (Opcode == 0x6E) DataSize = sizeof(UCHAR);
|
||||||
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
else DataSize = OperandSize ? sizeof(ULONG) : sizeof(USHORT);
|
||||||
|
|
||||||
if (State->PrefixFlags & FAST486_PREFIX_REP)
|
if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ))
|
||||||
{
|
{
|
||||||
UCHAR Block[STRING_BLOCK_SIZE];
|
UCHAR Block[STRING_BLOCK_SIZE];
|
||||||
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long
|
||||||
|
|
Loading…
Reference in a new issue