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=…
==============================================================================
--- 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