Some kind of big change in fetchdecode tables invented in order to compress the tables for better host data cache utilization

This commit is contained in:
Stanislav Shwartsman 2008-08-29 19:23:03 +00:00
parent f0bf6139de
commit b96f78dc0a
6 changed files with 2918 additions and 3160 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: cpu.h,v 1.514 2008-08-27 21:57:40 sshwarts Exp $
// $Id: cpu.h,v 1.515 2008-08-29 19:23:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -3739,9 +3739,10 @@ IMPLEMENT_EFLAG_SET_ACCESSOR_TF( 8)
// Group encoding: 111
#define BxLockable 0x0080 // bit 7
#define BxArithDstRM 0x0100 // bit 8
#if BX_SUPPORT_TRACE_CACHE
#define BxTraceEnd 0x0100 // bit 8
#define BxTraceEnd 0x0200 // bit 9
#else
#define BxTraceEnd 0
#endif

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: data_xfer8.cc,v 1.42 2008-08-08 09:22:47 sshwarts Exp $
// $Id: data_xfer8.cc,v 1.43 2008-08-29 19:23:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -80,22 +80,18 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOV_EbIbM(bxInstruction_c *i)
void BX_CPP_AttrRegparmN(1) BX_CPU_C::XLAT(bxInstruction_c *i)
{
bx_address offset;
#if BX_SUPPORT_X86_64
if (i->as64L()) {
offset = RBX;
AL = read_virtual_byte_64(i->seg(), RBX + AL);
}
else
#endif
if (i->as32L()) {
offset = EBX;
AL = read_virtual_byte(i->seg(), (Bit32u) (EBX + AL));
}
else {
offset = BX;
AL = read_virtual_byte_32(i->seg(), (Bit16u) (BX + AL));
}
AL = read_virtual_byte(i->seg(), offset + AL);
}
void BX_CPP_AttrRegparmN(1) BX_CPU_C::XCHG_EbGbM(bxInstruction_c *i)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff