diff --git a/reactos/include/reactos/libs/fast486/fast486.h b/reactos/include/reactos/libs/fast486/fast486.h index 1f64daff688..9280f488786 100644 --- a/reactos/include/reactos/libs/fast486/fast486.h +++ b/reactos/include/reactos/libs/fast486/fast486.h @@ -30,6 +30,13 @@ #define FASTCALL __fastcall #endif +#define FAST486_CHAR_MIN (-128) +#define FAST486_CHAR_MAX (127) +#define FAST486_SHORT_MIN (-32768L) +#define FAST486_SHORT_MAX (32767L) +#define FAST486_LONG_MIN (-2147483648LL) +#define FAST486_LONG_MAX (2147483647LL) + #define FAST486_NUM_GEN_REGS 8 #define FAST486_NUM_SEG_REGS 6 #define FAST486_NUM_CTRL_REGS 3 diff --git a/reactos/lib/fast486/opcodes.c b/reactos/lib/fast486/opcodes.c index e3b589c8bd6..163c43bd4c2 100644 --- a/reactos/lib/fast486/opcodes.c +++ b/reactos/lib/fast486/opcodes.c @@ -3532,7 +3532,8 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeImulModrmImm) Product = (LONGLONG)Multiplicand * (LONGLONG)Multiplier; /* Check for carry/overflow */ - State->Flags.Cf = State->Flags.Of = ((Product < -2147483648LL) || (Product > 2147483647LL)); + State->Flags.Cf = State->Flags.Of = ((Product < FAST486_LONG_MIN) + || (Product > FAST486_LONG_MAX)); /* Write-back the result */ Fast486WriteModrmDwordOperands(State, @@ -3559,7 +3560,8 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeImulModrmImm) Product = (LONG)Multiplicand * (LONG)Multiplier; /* Check for carry/overflow */ - State->Flags.Cf = State->Flags.Of = ((Product < -32768) || (Product > 32767)); + State->Flags.Cf = State->Flags.Of = ((Product < FAST486_SHORT_MIN) + || (Product > FAST486_SHORT_MAX)); /* Write-back the result */ Fast486WriteModrmWordOperands(State, diff --git a/reactos/lib/fast486/opgroups.c b/reactos/lib/fast486/opgroups.c index 65dd6864fd2..28ac67aaf1e 100644 --- a/reactos/lib/fast486/opgroups.c +++ b/reactos/lib/fast486/opgroups.c @@ -969,7 +969,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF6) SHORT Result = (SHORT)((CHAR)Value) * (SHORT)((CHAR)State->GeneralRegs[FAST486_REG_EAX].LowByte); /* Update the flags */ - State->Flags.Cf = State->Flags.Of = ((Result < -128) || (Result > 127)); + State->Flags.Cf = State->Flags.Of = ((Result < FAST486_CHAR_MIN) || (Result > FAST486_CHAR_MAX)); /* Write back the result */ State->GeneralRegs[FAST486_REG_EAX].LowWord = (USHORT)Result; @@ -1023,7 +1023,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF6) Quotient = (SHORT)State->GeneralRegs[FAST486_REG_EAX].LowWord / (CHAR)Value; Remainder = (SHORT)State->GeneralRegs[FAST486_REG_EAX].LowWord % (CHAR)Value; - if (Quotient > 127 || Quotient < -128) + if (Quotient > FAST486_CHAR_MAX || Quotient < FAST486_CHAR_MIN) { /* Divide error */ Fast486Exception(State, FAST486_EXCEPTION_DE); @@ -1205,7 +1205,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7) LONGLONG Result = (LONGLONG)((LONG)Value) * (LONGLONG)((LONG)State->GeneralRegs[FAST486_REG_EAX].Long); /* Update the flags */ - State->Flags.Cf = State->Flags.Of = ((Result < -2147483648LL) || (Result > 2147483647LL)); + State->Flags.Cf = State->Flags.Of = ((Result < FAST486_LONG_MIN) || (Result > FAST486_LONG_MAX)); /* Write back the result */ State->GeneralRegs[FAST486_REG_EAX].Long = Result & 0xFFFFFFFFULL; @@ -1216,7 +1216,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7) LONG Result = (LONG)((SHORT)Value) * (LONG)((SHORT)State->GeneralRegs[FAST486_REG_EAX].LowWord); /* Update the flags */ - State->Flags.Cf = State->Flags.Of = ((Result < -32768) || (Result > 32767)); + State->Flags.Cf = State->Flags.Of = ((Result < FAST486_SHORT_MIN) || (Result > FAST486_SHORT_MAX)); /* Write back the result */ State->GeneralRegs[FAST486_REG_EAX].LowWord = LOWORD(Result); @@ -1293,7 +1293,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7) LONGLONG Quotient = Dividend / (LONG)Value; LONG Remainder = Dividend % (LONG)Value; - if (Quotient > 2147483647LL || Quotient < -2147483648LL) + if (Quotient > FAST486_LONG_MAX || Quotient < FAST486_LONG_MIN) { /* Divide error */ Fast486Exception(State, FAST486_EXCEPTION_DE); @@ -1311,7 +1311,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroupF7) LONG Quotient = Dividend / (SHORT)LOWORD(Value); SHORT Remainder = Dividend % (SHORT)LOWORD(Value); - if (Quotient > 32767 || Quotient < -32768) + if (Quotient > FAST486_SHORT_MAX || Quotient < FAST486_SHORT_MIN) { /* Divide error */ Fast486Exception(State, FAST486_EXCEPTION_DE);