1. Update changes
2. Fix lazy_flags duplicate instruction patterns
This commit is contained in:
parent
f06b1bf577
commit
231cd533c6
@ -36,7 +36,6 @@ Changes to next release:
|
||||
! Unmasked underflow/overflow should correct the result
|
||||
by magic number for all operations, including float32
|
||||
and float64.
|
||||
! improve performance of transcendential instructions.
|
||||
|
||||
- Disassembler
|
||||
- fixed MOV opcode 0x88, had exchanged the operands (h.johansson)
|
||||
@ -111,6 +110,35 @@ Changes to next release:
|
||||
[869822] a real SVGA implementation by m_suzu
|
||||
|
||||
- these S.F. bugs were closed
|
||||
#522111 Host os SIGILL, booting grub from hd
|
||||
#1005052 DMA Controller Model Problem
|
||||
#552939 Bochs window doesn't resize when win311
|
||||
#989478 I-Cache and undefined Instructions
|
||||
#661008 make install fails
|
||||
#845691 Workaround: Ne2k and Windows 2000 not working
|
||||
#923662 BIOS diskette motor countdown byte broken
|
||||
#848141 VGA problems running Scitech Display Driver on Win95
|
||||
#799370 Problem booting ReactOS 0.1.3
|
||||
#670143 No rule to make config.h
|
||||
#653444 with vbe/lgpl bios, scrn updates broken
|
||||
#655696 quickstart broken?
|
||||
#659350 FDC
|
||||
#620853 Ne2000 ethernet card *NOT* supported
|
||||
#607611 Numlock
|
||||
#543476 Sound card does not work in Windows 95
|
||||
#529554 unsupported VBE features DISPI update
|
||||
#487316 Access violation on Win32
|
||||
#576253 RTC too fast
|
||||
#489748 io read from address 000003c0, len=2
|
||||
#656861 Gentoo Linux panics in VGA code
|
||||
#787184 Video BIOS's don't checksum correctly
|
||||
#988529 textconfig [Save options to] function output obsolete option
|
||||
#987293 Cannot accesss header/toolbar
|
||||
#988246 floppy read error
|
||||
#933199 speedup Bochs compilation 4x -> suggestion
|
||||
#979106 Incorrect disassembly table entry
|
||||
#658374 FPU incorrect emulation
|
||||
#706933 Problem with the F12-Key
|
||||
#477043 math_abort panic in RH 7.1
|
||||
#634371 Floating point problems
|
||||
#681138 // is not valid in C
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: arith16.cc,v 1.34 2004-08-14 20:44:48 sshwarts Exp $
|
||||
// $Id: arith16.cc,v 1.35 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -395,7 +395,7 @@ BX_CPU_C::CMP_EwGw(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -420,7 +420,7 @@ BX_CPU_C::CMP_GwEw(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -439,7 +439,7 @@ BX_CPU_C::CMP_AXIw(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -626,7 +626,7 @@ BX_CPU_C::CMP_EwIw(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -718,7 +718,7 @@ BX_CPU_C::CMPXCHG_EwGw(bxInstruction_c *i)
|
||||
|
||||
diff_16 = AX - op1_16;
|
||||
|
||||
SET_FLAGS_OSZAPC_16(AX, op1_16, diff_16, BX_INSTR_CMP16);
|
||||
SET_FLAGS_OSZAPC_16(AX, op1_16, diff_16, BX_INSTR_COMPARE16);
|
||||
|
||||
if (diff_16 == 0) { // if accumulator == dest
|
||||
// ZF = 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: arith32.cc,v 1.37 2004-08-14 20:44:48 sshwarts Exp $
|
||||
// $Id: arith32.cc,v 1.38 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -393,7 +393,7 @@ BX_CPU_C::CMP_EdGd(bxInstruction_c *i)
|
||||
#else
|
||||
Bit32u diff_32;
|
||||
diff_32 = op1_32 - op2_32;
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -419,7 +419,7 @@ BX_CPU_C::CMP_GdEd(bxInstruction_c *i)
|
||||
#else
|
||||
Bit32u diff_32;
|
||||
diff_32 = op1_32 - op2_32;
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -439,7 +439,7 @@ BX_CPU_C::CMP_EAXId(bxInstruction_c *i)
|
||||
#else
|
||||
Bit32u diff_32;
|
||||
diff_32 = op1_32 - op2_32;
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -640,7 +640,7 @@ BX_CPU_C::CMP_EdId(bxInstruction_c *i)
|
||||
#else
|
||||
Bit32u diff_32;
|
||||
diff_32 = op1_32 - op2_32;
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -719,7 +719,7 @@ BX_CPU_C::CMPXCHG_EdGd(bxInstruction_c *i)
|
||||
|
||||
diff_32 = EAX - op1_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(EAX, op1_32, diff_32, BX_INSTR_CMP32);
|
||||
SET_FLAGS_OSZAPC_32(EAX, op1_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (diff_32 == 0) { // if accumulator == dest
|
||||
// ZF = 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: arith64.cc,v 1.20 2004-08-14 20:44:48 sshwarts Exp $
|
||||
// $Id: arith64.cc,v 1.21 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -391,7 +391,7 @@ BX_CPU_C::CMP_EqGq(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
}
|
||||
|
||||
void
|
||||
@ -414,7 +414,7 @@ BX_CPU_C::CMP_GqEq(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
}
|
||||
|
||||
void
|
||||
@ -427,7 +427,7 @@ BX_CPU_C::CMP_RAXId(bxInstruction_c *i)
|
||||
op2_64 = (Bit32s) i->Id();
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
}
|
||||
|
||||
void
|
||||
@ -603,7 +603,7 @@ BX_CPU_C::CMP_EqId(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
}
|
||||
|
||||
void
|
||||
@ -704,7 +704,7 @@ BX_CPU_C::CMPXCHG_EqGq(bxInstruction_c *i)
|
||||
|
||||
diff_64 = RAX - op1_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(RAX, op1_64, diff_64, BX_INSTR_CMP64);
|
||||
SET_FLAGS_OSZAPC_64(RAX, op1_64, diff_64, BX_INSTR_COMPARE64);
|
||||
|
||||
if (diff_64 == 0) { // if accumulator == dest
|
||||
// ZF = 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: arith8.cc,v 1.30 2004-08-14 20:44:48 sshwarts Exp $
|
||||
// $Id: arith8.cc,v 1.31 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -314,7 +314,7 @@ BX_CPU_C::CMP_EbGb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -339,7 +339,7 @@ BX_CPU_C::CMP_GbEb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -358,7 +358,7 @@ BX_CPU_C::CMP_ALIb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -486,7 +486,7 @@ BX_CPU_C::CMP_EbIb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -562,7 +562,7 @@ BX_CPU_C::CMPXCHG_EbGb(bxInstruction_c *i)
|
||||
|
||||
diff_8 = AL - op1_8;
|
||||
|
||||
SET_FLAGS_OSZAPC_8(AL, op1_8, diff_8, BX_INSTR_CMP8);
|
||||
SET_FLAGS_OSZAPC_8(AL, op1_8, diff_8, BX_INSTR_COMPARE8);
|
||||
|
||||
if (diff_8 == 0) { // if accumulator == dest
|
||||
// ZF = 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: lazy_flags.cc,v 1.18 2004-08-15 20:31:27 sshwarts Exp $
|
||||
// $Id: lazy_flags.cc,v 1.19 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -92,31 +92,23 @@ bx_bool BX_CPU_C::get_CFLazy(void)
|
||||
break;
|
||||
#endif
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
case BX_INSTR_COMPARE8:
|
||||
cf = (BX_CPU_THIS_PTR oszapc.op1_8 <
|
||||
BX_CPU_THIS_PTR oszapc.op2_8);
|
||||
break;
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
case BX_INSTR_COMPARE16:
|
||||
cf = (BX_CPU_THIS_PTR oszapc.op1_16 <
|
||||
BX_CPU_THIS_PTR oszapc.op2_16);
|
||||
break;
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
case BX_INSTR_COMPARE32:
|
||||
cf = (BX_CPU_THIS_PTR oszapc.op1_32 <
|
||||
BX_CPU_THIS_PTR oszapc.op2_32);
|
||||
break;
|
||||
#if BX_SUPPORT_X86_64
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
case BX_INSTR_COMPARE64:
|
||||
cf = (BX_CPU_THIS_PTR oszapc.op1_64 <
|
||||
BX_CPU_THIS_PTR oszapc.op2_64);
|
||||
break;
|
||||
@ -275,50 +267,42 @@ bx_bool BX_CPU_C::get_AFLazy(void)
|
||||
switch ( (BX_CPU_THIS_PTR lf_flags_status>>8) & 0x00000f ) {
|
||||
case BX_LF_INDEX_OSZAPC:
|
||||
switch (BX_CPU_THIS_PTR oszapc.instr) {
|
||||
case BX_INSTR_COMPARE8:
|
||||
case BX_INSTR_ADD8:
|
||||
case BX_INSTR_ADC8:
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_SBB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
af =
|
||||
((BX_CPU_THIS_PTR oszapc.op1_8 ^
|
||||
BX_CPU_THIS_PTR oszapc.op2_8) ^
|
||||
BX_CPU_THIS_PTR oszapc.result_8) & 0x10;
|
||||
break;
|
||||
case BX_INSTR_COMPARE16:
|
||||
case BX_INSTR_ADD16:
|
||||
case BX_INSTR_ADC16:
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_SBB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
af =
|
||||
((BX_CPU_THIS_PTR oszapc.op1_16 ^
|
||||
BX_CPU_THIS_PTR oszapc.op2_16) ^
|
||||
BX_CPU_THIS_PTR oszapc.result_16) & 0x10;
|
||||
break;
|
||||
case BX_INSTR_COMPARE32:
|
||||
case BX_INSTR_ADD32:
|
||||
case BX_INSTR_ADC32:
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_SBB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
af =
|
||||
((BX_CPU_THIS_PTR oszapc.op1_32 ^
|
||||
BX_CPU_THIS_PTR oszapc.op2_32) ^
|
||||
BX_CPU_THIS_PTR oszapc.result_32) & 0x10;
|
||||
break;
|
||||
#if BX_SUPPORT_X86_64
|
||||
case BX_INSTR_COMPARE64:
|
||||
case BX_INSTR_ADD64:
|
||||
case BX_INSTR_ADC64:
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_SBB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
af =
|
||||
((BX_CPU_THIS_PTR oszapc.op1_64 ^
|
||||
BX_CPU_THIS_PTR oszapc.op2_64) ^
|
||||
@ -430,10 +414,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void)
|
||||
case BX_INSTR_ADC8:
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_SBB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_COMPARE8:
|
||||
case BX_INSTR_NEG8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
case BX_INSTR_SAR8:
|
||||
case BX_INSTR_SHR8:
|
||||
case BX_INSTR_SHL8:
|
||||
@ -444,10 +426,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void)
|
||||
case BX_INSTR_ADC16:
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_SBB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_COMPARE16:
|
||||
case BX_INSTR_NEG16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
case BX_INSTR_SAR16:
|
||||
case BX_INSTR_SHR16:
|
||||
case BX_INSTR_SHL16:
|
||||
@ -458,10 +438,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void)
|
||||
case BX_INSTR_ADC32:
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_SBB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_COMPARE32:
|
||||
case BX_INSTR_NEG32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
case BX_INSTR_SAR32:
|
||||
case BX_INSTR_SHR32:
|
||||
case BX_INSTR_SHL32:
|
||||
@ -473,10 +451,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void)
|
||||
case BX_INSTR_ADC64:
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_SBB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_COMPARE64:
|
||||
case BX_INSTR_NEG64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
case BX_INSTR_SAR64:
|
||||
case BX_INSTR_SHR64:
|
||||
case BX_INSTR_SHL64:
|
||||
@ -546,10 +522,8 @@ bx_bool BX_CPU_C::get_SFLazy(void)
|
||||
case BX_INSTR_ADC8:
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_SBB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_COMPARE8:
|
||||
case BX_INSTR_NEG8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
case BX_INSTR_SAR8:
|
||||
case BX_INSTR_SHR8:
|
||||
case BX_INSTR_SHL8:
|
||||
@ -560,10 +534,8 @@ bx_bool BX_CPU_C::get_SFLazy(void)
|
||||
case BX_INSTR_ADC16:
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_SBB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_COMPARE16:
|
||||
case BX_INSTR_NEG16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
case BX_INSTR_SAR16:
|
||||
case BX_INSTR_SHR16:
|
||||
case BX_INSTR_SHL16:
|
||||
@ -575,10 +547,8 @@ bx_bool BX_CPU_C::get_SFLazy(void)
|
||||
case BX_INSTR_ADC32:
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_SBB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_COMPARE32:
|
||||
case BX_INSTR_NEG32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
case BX_INSTR_SAR32:
|
||||
case BX_INSTR_SHR32:
|
||||
case BX_INSTR_SHL32:
|
||||
@ -591,10 +561,8 @@ bx_bool BX_CPU_C::get_SFLazy(void)
|
||||
case BX_INSTR_ADC64:
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_SBB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_COMPARE64:
|
||||
case BX_INSTR_NEG64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
case BX_INSTR_SAR64:
|
||||
case BX_INSTR_SHR64:
|
||||
case BX_INSTR_SHL64:
|
||||
@ -691,9 +659,7 @@ bx_bool BX_CPU_C::get_OFLazy(void)
|
||||
#endif
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_SBB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
case BX_INSTR_COMPARE8:
|
||||
op1_b7 = BX_CPU_THIS_PTR oszapc.op1_8 & 0x80;
|
||||
op2_b7 = BX_CPU_THIS_PTR oszapc.op2_8 & 0x80;
|
||||
result_b7 = BX_CPU_THIS_PTR oszapc.result_8 & 0x80;
|
||||
@ -701,9 +667,7 @@ bx_bool BX_CPU_C::get_OFLazy(void)
|
||||
break;
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_SBB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
case BX_INSTR_COMPARE16:
|
||||
op1_b15 = BX_CPU_THIS_PTR oszapc.op1_16 & 0x8000;
|
||||
op2_b15 = BX_CPU_THIS_PTR oszapc.op2_16 & 0x8000;
|
||||
result_b15 = BX_CPU_THIS_PTR oszapc.result_16 & 0x8000;
|
||||
@ -711,9 +675,7 @@ bx_bool BX_CPU_C::get_OFLazy(void)
|
||||
break;
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_SBB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
case BX_INSTR_COMPARE32:
|
||||
op1_b31 = BX_CPU_THIS_PTR oszapc.op1_32 & 0x80000000;
|
||||
op2_b31 = BX_CPU_THIS_PTR oszapc.op2_32 & 0x80000000;
|
||||
result_b31 = BX_CPU_THIS_PTR oszapc.result_32 & 0x80000000;
|
||||
@ -722,9 +684,7 @@ bx_bool BX_CPU_C::get_OFLazy(void)
|
||||
#if BX_SUPPORT_X86_64
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_SBB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
case BX_INSTR_COMPARE64:
|
||||
op1_b63 = BX_CPU_THIS_PTR oszapc.op1_64 & BX_CONST64(0x8000000000000000);
|
||||
op2_b63 = BX_CPU_THIS_PTR oszapc.op2_64 & BX_CONST64(0x8000000000000000);
|
||||
result_b63 = BX_CPU_THIS_PTR oszapc.result_64 & BX_CONST64(0x8000000000000000);
|
||||
@ -882,10 +842,8 @@ bx_bool BX_CPU_C::get_PFLazy(void)
|
||||
case BX_INSTR_ADC8:
|
||||
case BX_INSTR_SUB8:
|
||||
case BX_INSTR_SBB8:
|
||||
case BX_INSTR_CMP8:
|
||||
case BX_INSTR_COMPARE8:
|
||||
case BX_INSTR_NEG8:
|
||||
case BX_INSTR_CMPS8:
|
||||
case BX_INSTR_SCAS8:
|
||||
case BX_INSTR_SAR8:
|
||||
case BX_INSTR_SHR8:
|
||||
case BX_INSTR_SHL8:
|
||||
@ -896,10 +854,8 @@ bx_bool BX_CPU_C::get_PFLazy(void)
|
||||
case BX_INSTR_ADC16:
|
||||
case BX_INSTR_SUB16:
|
||||
case BX_INSTR_SBB16:
|
||||
case BX_INSTR_CMP16:
|
||||
case BX_INSTR_COMPARE16:
|
||||
case BX_INSTR_NEG16:
|
||||
case BX_INSTR_CMPS16:
|
||||
case BX_INSTR_SCAS16:
|
||||
case BX_INSTR_SAR16:
|
||||
case BX_INSTR_SHR16:
|
||||
case BX_INSTR_SHL16:
|
||||
@ -911,10 +867,8 @@ bx_bool BX_CPU_C::get_PFLazy(void)
|
||||
case BX_INSTR_ADC32:
|
||||
case BX_INSTR_SUB32:
|
||||
case BX_INSTR_SBB32:
|
||||
case BX_INSTR_CMP32:
|
||||
case BX_INSTR_COMPARE32:
|
||||
case BX_INSTR_NEG32:
|
||||
case BX_INSTR_CMPS32:
|
||||
case BX_INSTR_SCAS32:
|
||||
case BX_INSTR_SAR32:
|
||||
case BX_INSTR_SHR32:
|
||||
case BX_INSTR_SHL32:
|
||||
@ -927,10 +881,8 @@ bx_bool BX_CPU_C::get_PFLazy(void)
|
||||
case BX_INSTR_ADC64:
|
||||
case BX_INSTR_SUB64:
|
||||
case BX_INSTR_SBB64:
|
||||
case BX_INSTR_CMP64:
|
||||
case BX_INSTR_COMPARE64:
|
||||
case BX_INSTR_NEG64:
|
||||
case BX_INSTR_CMPS64:
|
||||
case BX_INSTR_SCAS64:
|
||||
case BX_INSTR_SAR64:
|
||||
case BX_INSTR_SHR64:
|
||||
case BX_INSTR_SHL64:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: lazy_flags.h,v 1.12 2004-08-15 20:12:05 sshwarts Exp $
|
||||
// $Id: lazy_flags.h,v 1.13 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -47,10 +47,10 @@
|
||||
#define BX_INSTR_SBB32 15
|
||||
#define BX_INSTR_SBB64 16
|
||||
|
||||
#define BX_INSTR_CMP8 17
|
||||
#define BX_INSTR_CMP16 18
|
||||
#define BX_INSTR_CMP32 19
|
||||
#define BX_INSTR_CMP64 20
|
||||
#define BX_INSTR_COMPARE8 17
|
||||
#define BX_INSTR_COMPARE16 18
|
||||
#define BX_INSTR_COMPARE32 19
|
||||
#define BX_INSTR_COMPARE64 20
|
||||
|
||||
#define BX_INSTR_INC8 21
|
||||
#define BX_INSTR_INC16 22
|
||||
@ -72,15 +72,15 @@
|
||||
#define BX_INSTR_LOGIC32 35
|
||||
#define BX_INSTR_LOGIC64 36
|
||||
|
||||
#define BX_INSTR_CMPS8 37
|
||||
#define BX_INSTR_CMPS16 38
|
||||
#define BX_INSTR_CMPS32 39
|
||||
#define BX_INSTR_CMPS64 40
|
||||
// BX_INSTR_BITSCAN8 not exists, leave number for alignment
|
||||
#define BX_INSTR_BITSCAN16 38
|
||||
#define BX_INSTR_BITSCAN32 39
|
||||
#define BX_INSTR_BITSCAN64 40
|
||||
|
||||
#define BX_INSTR_SCAS8 41
|
||||
#define BX_INSTR_SCAS16 42
|
||||
#define BX_INSTR_SCAS32 43
|
||||
#define BX_INSTR_SCAS64 44
|
||||
#define BX_INSTR_SHL8 41
|
||||
#define BX_INSTR_SHL16 42
|
||||
#define BX_INSTR_SHL32 43
|
||||
#define BX_INSTR_SHL64 44
|
||||
|
||||
#define BX_INSTR_SHR8 45
|
||||
#define BX_INSTR_SHR16 46
|
||||
@ -92,16 +92,6 @@
|
||||
#define BX_INSTR_SAR32 51
|
||||
#define BX_INSTR_SAR64 52
|
||||
|
||||
#define BX_INSTR_SHL8 53
|
||||
#define BX_INSTR_SHL16 54
|
||||
#define BX_INSTR_SHL32 55
|
||||
#define BX_INSTR_SHL64 56
|
||||
|
||||
// BX_INSTR_BITSCAN8 not exists, leave number for alignment
|
||||
#define BX_INSTR_BITSCAN16 58
|
||||
#define BX_INSTR_BITSCAN32 59
|
||||
#define BX_INSTR_BITSCAN64 60
|
||||
|
||||
#define BX_LF_INDEX_OSZAPC 1
|
||||
#define BX_LF_INDEX_OSZAP 2
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: string.cc,v 1.23 2004-08-14 20:44:48 sshwarts Exp $
|
||||
// $Id: string.cc,v 1.24 2004-08-16 20:18:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -929,7 +929,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i)
|
||||
|
||||
diff_8 = op1_8 - op2_8;
|
||||
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement RSI */
|
||||
@ -959,7 +959,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i)
|
||||
|
||||
diff_8 = op1_8 - op2_8;
|
||||
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -997,7 +997,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i)
|
||||
#else
|
||||
diff_8 = op1_8 - op2_8;
|
||||
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1047,7 +1047,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMPS64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1070,7 +1070,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1092,7 +1092,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_16 = op1_16 - op2_16;
|
||||
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1128,7 +1128,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMPS64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1151,7 +1151,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1177,7 +1177,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
#else
|
||||
Bit16u diff_16;
|
||||
diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1214,7 +1214,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1244,7 +1244,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i)
|
||||
Bit16u diff_16;
|
||||
diff_16 = op1_16 - op2_16;
|
||||
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1282,7 +1282,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i)
|
||||
|
||||
diff_8 = op1_8 - op2_8;
|
||||
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1311,7 +1311,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1342,7 +1342,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit8u diff_8 = op1_8 - op2_8;
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8);
|
||||
SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1374,7 +1374,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_SCAS64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement EDI */
|
||||
@ -1394,7 +1394,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement EDI */
|
||||
@ -1413,7 +1413,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_16 = op1_16 - op2_16;
|
||||
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1441,7 +1441,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_64 = op1_64 - op2_64;
|
||||
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_SCAS64);
|
||||
SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1462,7 +1462,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1485,7 +1485,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
@ -1516,7 +1516,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
|
||||
diff_32 = op1_32 - op2_32;
|
||||
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32);
|
||||
SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32);
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
/* decrement ESI */
|
||||
@ -1541,7 +1541,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i)
|
||||
setEFlagsOSZAPC(flags32);
|
||||
#else
|
||||
Bit16u diff_16 = op1_16 - op2_16;
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16);
|
||||
SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16);
|
||||
#endif
|
||||
|
||||
if (BX_CPU_THIS_PTR get_DF ()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user