Author: aandrejevic Date: Tue Sep 30 22:18:41 2014 New Revision: 64428
URL: http://svn.reactos.org/svn/reactos?rev=64428&view=rev Log: [FAST486] Apparently MOVS, LODS, STOS, INS and OUTS can also take REPNZ as a prefix.
Modified: trunk/reactos/lib/fast486/opcodes.c
Modified: trunk/reactos/lib/fast486/opcodes.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/fast486/opcodes.c?rev=6... ============================================================================== --- trunk/reactos/lib/fast486/opcodes.c [iso-8859-1] (original) +++ trunk/reactos/lib/fast486/opcodes.c [iso-8859-1] Tue Sep 30 22:18:41 2014 @@ -5469,7 +5469,7 @@ 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)) || (!AddressSize && (State->GeneralRegs[FAST486_REG_ECX].LowWord == 0))) @@ -5537,7 +5537,7 @@ }
// FIXME: This method is slow! - if (State->PrefixFlags & FAST486_PREFIX_REP) + if (State->PrefixFlags & (FAST486_PREFIX_REP | FAST486_PREFIX_REPNZ)) { if (AddressSize) { @@ -5727,7 +5727,7 @@ if (Opcode == 0xAA) DataSize = sizeof(UCHAR); 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]; ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long @@ -5870,7 +5870,7 @@ if (Opcode == 0xAC) DataSize = sizeof(UCHAR); 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 : State->GeneralRegs[FAST486_REG_ECX].LowWord; @@ -6056,7 +6056,7 @@ if (Opcode == 0x6C) DataSize = sizeof(UCHAR); 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]; ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long @@ -6197,7 +6197,7 @@ if (Opcode == 0x6E) DataSize = sizeof(UCHAR); 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]; ULONG Count = AddressSize ? State->GeneralRegs[FAST486_REG_ECX].Long