In rotate operations, the count is always masked with 0x1F, regardless
of the operand size.
svn path=/branches/ntvdm/; revision=60966
}
/* Normalize the count */
- if (OperandSize) Count &= 0x1F;
- else Count &= 0x0F;
+ Count &= 0x1F;
/* Do nothing if the count is zero */
if (Count == 0) return TRUE;
}
/* Normalize the count */
- if (OperandSize) Count &= 0x1F;
- else Count &= 0x0F;
+ Count &= 0x1F;
/* Do nothing if the count is zero */
if (Count == 0) return TRUE;
ULONG HighestBit = 1 << (Bits - 1);
ULONG Result;
- if ((Operation != 2) && (Operation != 3))
- {
- /* Mask the count */
- Count &= Bits - 1;
- }
- else
- {
- /* For RCL and RCR, the CF is included in the value */
- Count %= Bits + 1;
- }
+ /* Normalize the count */
+ Count &= 0x1F;
+
+ /* If the count is zero, do nothing */
+ if (Count == 0) goto SetFlags;
/* Check which operation is this */
switch (Operation)
}
}
+SetFlags:
if (Operation >= 4)
{
/* Update ZF, SF and PF */