addressing issue Possible Undefined Behavior in NEG_EdR() and NEG_EdM() #227
This commit is contained in:
parent
35abc682cb
commit
4eae91f1ca
@ -458,7 +458,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EwM(bxInstruction_c *i)
|
||||
bx_address eaddr = BX_CPU_RESOLVE_ADDR(i);
|
||||
|
||||
Bit32u op1_16 = read_RMW_virtual_word(i->seg(), eaddr);
|
||||
op1_16 = 0 - (Bit32s)(Bit16s)(op1_16);
|
||||
op1_16 = -op1_16;
|
||||
write_RMW_linear_word(op1_16);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_16(0, 0 - op1_16, op1_16);
|
||||
@ -469,7 +469,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EwM(bxInstruction_c *i)
|
||||
void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EwR(bxInstruction_c *i)
|
||||
{
|
||||
Bit32u op1_16 = BX_READ_16BIT_REG(i->dst());
|
||||
op1_16 = 0 - (Bit32s)(Bit16s)(op1_16);
|
||||
op1_16 = -op1_16;
|
||||
BX_WRITE_16BIT_REG(i->dst(), op1_16);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_16(0, 0 - op1_16, op1_16);
|
||||
|
@ -492,7 +492,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EdM(bxInstruction_c *i)
|
||||
bx_address eaddr = BX_CPU_RESOLVE_ADDR(i);
|
||||
|
||||
Bit32u op1_32 = read_RMW_virtual_dword(i->seg(), eaddr);
|
||||
op1_32 = - (Bit32s)(op1_32);
|
||||
op1_32 = -op1_32;
|
||||
write_RMW_linear_dword(op1_32);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_32(0, 0 - op1_32, op1_32);
|
||||
@ -503,7 +503,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EdM(bxInstruction_c *i)
|
||||
void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EdR(bxInstruction_c *i)
|
||||
{
|
||||
Bit32u op1_32 = BX_READ_32BIT_REG(i->dst());
|
||||
op1_32 = - (Bit32s)(op1_32);
|
||||
op1_32 = -op1_32;
|
||||
BX_WRITE_32BIT_REGZ(i->dst(), op1_32);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_32(0, 0 - op1_32, op1_32);
|
||||
|
@ -492,7 +492,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EqM(bxInstruction_c *i)
|
||||
bx_address eaddr = BX_CPU_RESOLVE_ADDR_64(i);
|
||||
|
||||
Bit64u op1_64 = read_RMW_linear_qword(i->seg(), get_laddr64(i->seg(), eaddr));
|
||||
op1_64 = - (Bit64s)(op1_64);
|
||||
op1_64 = -op1_64;
|
||||
write_RMW_linear_qword(op1_64);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_64(0, -op1_64, op1_64);
|
||||
@ -503,7 +503,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EqM(bxInstruction_c *i)
|
||||
void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EqR(bxInstruction_c *i)
|
||||
{
|
||||
Bit64u op1_64 = BX_READ_64BIT_REG(i->dst());
|
||||
op1_64 = - (Bit64s)(op1_64);
|
||||
op1_64 = -op1_64;
|
||||
BX_WRITE_64BIT_REG(i->dst(), op1_64);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_64(0, -op1_64, op1_64);
|
||||
|
@ -420,7 +420,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EbM(bxInstruction_c *i)
|
||||
bx_address eaddr = BX_CPU_RESOLVE_ADDR(i);
|
||||
|
||||
Bit32u op1_8 = read_RMW_virtual_byte(i->seg(), eaddr);
|
||||
op1_8 = - (Bit8s)(op1_8);
|
||||
op1_8 = -op1_8;
|
||||
write_RMW_linear_byte(op1_8);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_8(0, 0 - op1_8, op1_8);
|
||||
@ -431,7 +431,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EbM(bxInstruction_c *i)
|
||||
void BX_CPP_AttrRegparmN(1) BX_CPU_C::NEG_EbR(bxInstruction_c *i)
|
||||
{
|
||||
Bit32u op1_8 = BX_READ_8BIT_REGx(i->dst(), i->extend8bitL());
|
||||
op1_8 = - (Bit8s)(op1_8);
|
||||
op1_8 = -op1_8;
|
||||
BX_WRITE_8BIT_REGx(i->dst(), i->extend8bitL(), op1_8);
|
||||
|
||||
SET_FLAGS_OSZAPC_SUB_8(0, 0 - op1_8, op1_8);
|
||||
|
Loading…
x
Reference in New Issue
Block a user