- add __attribute__((regparm(X))) performance trick with gcc on x86

on some cpu instructions (patch from Conn Clark)
- performance improvement is 1% on win95 boot
This commit is contained in:
Christophe Bothamy 2003-03-17 00:41:01 +00:00
parent 323e42255d
commit 1a518b81fe
10 changed files with 259 additions and 253 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: cpu.cc,v 1.75 2003-02-28 02:37:18 ptrumpet Exp $
// $Id: cpu.cc,v 1.76 2003-03-17 00:40:57 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -208,15 +208,15 @@ BX_CPU_C::cpu_loop(Bit32s max_instr_count)
// iCache hit. Instruction is already decoded and stored in
// the instruction cache.
BxExecutePtr_t resolveModRM = i->ResolveModrm; // Get as soon as possible for speculation.
BxExecutePtr_tR resolveModRM = i->ResolveModrm; // Get as soon as possible for speculation.
execute = i->execute; // fetch as soon as possible for speculation.
if (resolveModRM) {
BX_CPU_CALL_METHOD(resolveModRM, (i));
BX_CPU_CALL_METHODR(resolveModRM, (i));
}
#if BX_INSTRUMENTATION
// An instruction was found in the iCache.
BX_INSTR_OPCODE(BX_CPU_ID, BX_CPU_THIS_PTR eipFetchPtr + eipBiased,
BX_INSTR_OPCODE(BX_CPU_ID, BX_CPU_THIS_PTR eipFetchPtr + eipBiased,
i->ilen(), BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.d_b);
#endif
}
@ -260,7 +260,7 @@ BX_CPU_C::cpu_loop(Bit32s max_instr_count)
ret = fetchDecode(fetchPtr, i, maxFetch);
}
BxExecutePtr_t resolveModRM = i->ResolveModrm; // Get function pointers early.
BxExecutePtr_tR resolveModRM = i->ResolveModrm; // Get function pointers early.
if (ret==0) {
#if BX_SupportICache
// Invalidate entry, since fetch-decode failed with partial updates
@ -282,7 +282,7 @@ BX_CPU_C::cpu_loop(Bit32s max_instr_count)
#endif
execute = i->execute; // fetch as soon as possible for speculation.
if (resolveModRM) {
BX_CPU_CALL_METHOD(resolveModRM, (i));
BX_CPU_CALL_METHODR(resolveModRM, (i));
}
}
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: cpu.h,v 1.132 2003-03-02 23:59:09 cbothamy Exp $
// $Id: cpu.h,v 1.133 2003-03-17 00:40:58 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -342,6 +342,8 @@ class BX_CPU_C;
// Since this is different from when SMF=1, encapsulate it in a macro.
# define BX_CPU_CALL_METHOD(func, args) \
(this->*((BxExecutePtr_t) (func))) args
# define BX_CPU_CALL_METHODR(func, args) \
(this->*((BxExecutePtr_tR) (func))) args
#else
// static member functions. With SMF, there is only one CPU by definition.
# define BX_CPU_THIS_PTR BX_CPU(0)->
@ -350,6 +352,8 @@ class BX_CPU_C;
# define BX_CPU_C_PREFIX
# define BX_CPU_CALL_METHOD(func, args) \
((BxExecutePtr_t) (func)) args
# define BX_CPU_CALL_METHODR(func, args) \
((BxExecutePtr_tR) (func)) args
#endif
#if BX_SMP_PROCESSORS==1
@ -724,10 +728,10 @@ public:
// and a function to execute the instruction after resolving
// the memory address (if any).
#if BX_USE_CPU_SMF
void (*ResolveModrm)(bxInstruction_c *);
void (*ResolveModrm)(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
void (*execute)(bxInstruction_c *);
#else
void (BX_CPU_C::*ResolveModrm)(bxInstruction_c *);
void (BX_CPU_C::*ResolveModrm)(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
void (BX_CPU_C::*execute)(bxInstruction_c *);
#endif
@ -968,8 +972,10 @@ public:
#if BX_USE_CPU_SMF
typedef void (*BxExecutePtr_t)(bxInstruction_c *);
typedef void (*BxExecutePtr_tR)(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
#else
typedef void (BX_CPU_C::*BxExecutePtr_t)(bxInstruction_c *);
typedef void (BX_CPU_C::*BxExecutePtr_tR)(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
#endif
@ -2522,128 +2528,128 @@ union {
#endif
BX_SMF void UndefinedOpcode(bxInstruction_c *);
BX_SMF void BxError(bxInstruction_c *i);
BX_SMF void BxResolveError(bxInstruction_c *i);
BX_SMF void BxResolveError(bxInstruction_c *i) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm0(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm1(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm2(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm3(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm4(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm5(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm6(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm7(bxInstruction_c *);
BX_SMF void Resolve16Mod0Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod0Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm0(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm1(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm2(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm3(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm4(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm5(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm6(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm7(bxInstruction_c *);
BX_SMF void Resolve16Mod1or2Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve16Mod1or2Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm0(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm1(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm2(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm3(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm5(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm6(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm7(bxInstruction_c *);
BX_SMF void Resolve32Mod0Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm0(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm1(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm2(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm3(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm5(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm6(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm7(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base0(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base1(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base2(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base3(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base4(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base5(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base6(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base7(bxInstruction_c *);
BX_SMF void Resolve32Mod0Base0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod0Base7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base0(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base1(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base2(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base3(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base4(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base5(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base6(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base7(bxInstruction_c *);
BX_SMF void Resolve32Mod1or2Base0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve32Mod1or2Base7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
#if BX_SUPPORT_X86_64
// 64 bit addressing
BX_SMF void Resolve64Mod0Rm0(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm1(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm2(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm3(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm5(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm6(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm7(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm8(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm9(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm10(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm11(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm12(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm13(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm14(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm15(bxInstruction_c *);
BX_SMF void Resolve64Mod0Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm8(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm9(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm10(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm11(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm12(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm13(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm14(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Rm15(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm0(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm1(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm2(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm3(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm5(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm6(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm7(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm8(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm9(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm10(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm11(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm12(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm13(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm14(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm15(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Rm0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm8(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm9(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm10(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm11(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm12(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm13(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm14(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Rm15(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base0(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base1(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base2(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base3(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base4(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base5(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base6(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base7(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base8(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base9(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base10(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base11(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base12(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base13(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base14(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base15(bxInstruction_c *);
BX_SMF void Resolve64Mod0Base0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base8(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base9(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base10(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base11(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base12(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base13(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base14(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod0Base15(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base0(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base1(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base2(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base3(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base4(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base5(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base6(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base7(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base8(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base9(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base10(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base11(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base12(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base13(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base14(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base15(bxInstruction_c *);
BX_SMF void Resolve64Mod1or2Base0(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base1(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base2(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base3(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base4(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base5(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base6(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base7(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base8(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base9(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base10(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base11(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base12(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base13(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base14(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
BX_SMF void Resolve64Mod1or2Base15(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
#endif // #if BX_SUPPORT_X86_64

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: fetchdecode.cc,v 1.44 2003-02-13 15:04:00 sshwarts Exp $
// $Id: fetchdecode.cc,v 1.45 2003-03-17 00:40:58 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -87,7 +87,7 @@ static unsigned BxMemRegsUsed16[8] = {
};
#endif
static BxExecutePtr_t BxResolve16Mod0[8] = {
static BxExecutePtr_tR BxResolve16Mod0[8] = {
&BX_CPU_C::Resolve16Mod0Rm0,
&BX_CPU_C::Resolve16Mod0Rm1,
&BX_CPU_C::Resolve16Mod0Rm2,
@ -98,7 +98,7 @@ static BxExecutePtr_t BxResolve16Mod0[8] = {
&BX_CPU_C::Resolve16Mod0Rm7
};
static BxExecutePtr_t BxResolve16Mod1or2[8] = {
static BxExecutePtr_tR BxResolve16Mod1or2[8] = {
&BX_CPU_C::Resolve16Mod1or2Rm0,
&BX_CPU_C::Resolve16Mod1or2Rm1,
&BX_CPU_C::Resolve16Mod1or2Rm2,
@ -109,7 +109,7 @@ static BxExecutePtr_t BxResolve16Mod1or2[8] = {
&BX_CPU_C::Resolve16Mod1or2Rm7
};
static BxExecutePtr_t BxResolve32Mod0[8] = {
static BxExecutePtr_tR BxResolve32Mod0[8] = {
&BX_CPU_C::Resolve32Mod0Rm0,
&BX_CPU_C::Resolve32Mod0Rm1,
&BX_CPU_C::Resolve32Mod0Rm2,
@ -120,7 +120,7 @@ static BxExecutePtr_t BxResolve32Mod0[8] = {
&BX_CPU_C::Resolve32Mod0Rm7
};
static BxExecutePtr_t BxResolve32Mod1or2[8] = {
static BxExecutePtr_tR BxResolve32Mod1or2[8] = {
&BX_CPU_C::Resolve32Mod1or2Rm0,
&BX_CPU_C::Resolve32Mod1or2Rm1,
&BX_CPU_C::Resolve32Mod1or2Rm2,
@ -131,7 +131,7 @@ static BxExecutePtr_t BxResolve32Mod1or2[8] = {
&BX_CPU_C::Resolve32Mod1or2Rm7
};
static BxExecutePtr_t BxResolve32Mod0Base[8] = {
static BxExecutePtr_tR BxResolve32Mod0Base[8] = {
&BX_CPU_C::Resolve32Mod0Base0,
&BX_CPU_C::Resolve32Mod0Base1,
&BX_CPU_C::Resolve32Mod0Base2,
@ -142,7 +142,7 @@ static BxExecutePtr_t BxResolve32Mod0Base[8] = {
&BX_CPU_C::Resolve32Mod0Base7,
};
static BxExecutePtr_t BxResolve32Mod1or2Base[8] = {
static BxExecutePtr_tR BxResolve32Mod1or2Base[8] = {
&BX_CPU_C::Resolve32Mod1or2Base0,
&BX_CPU_C::Resolve32Mod1or2Base1,
&BX_CPU_C::Resolve32Mod1or2Base2,
@ -2793,7 +2793,7 @@ modrm_done:
else {
BxOpcodeInfo_t *OpcodeInfoPtr = BxOpcodeInfo[b1+offset].AnotherArray;
instruction->execute = OpcodeInfoPtr[op].ExecutePtr;
attr |= OpcodeInfoPtr[op].Attr;
attr |= OpcodeInfoPtr[op].Attr;
}
}
// (See note immediately above for comment)
@ -2975,7 +2975,7 @@ BX_CPU_C::BxError(bxInstruction_c *i)
BX_CPU_THIS_PTR UndefinedOpcode(i);
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::BxResolveError(bxInstruction_c *i)
{
BX_PANIC(("BxResolveError: instruction with op1=0x%x", i->b1()));

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: fetchdecode64.cc,v 1.41 2003-03-13 00:45:44 ptrumpet Exp $
// $Id: fetchdecode64.cc,v 1.42 2003-03-17 00:40:59 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -101,7 +101,7 @@ static unsigned BxMemRegsUsed16[8] = {
};
#endif
static BxExecutePtr_t BxResolve32Mod0[8] = {
static BxExecutePtr_tR BxResolve32Mod0[8] = {
&BX_CPU_C::Resolve32Mod0Rm0,
&BX_CPU_C::Resolve32Mod0Rm1,
&BX_CPU_C::Resolve32Mod0Rm2,
@ -112,7 +112,7 @@ static BxExecutePtr_t BxResolve32Mod0[8] = {
&BX_CPU_C::Resolve32Mod0Rm7
};
static BxExecutePtr_t BxResolve32Mod1or2[8] = {
static BxExecutePtr_tR BxResolve32Mod1or2[8] = {
&BX_CPU_C::Resolve32Mod1or2Rm0,
&BX_CPU_C::Resolve32Mod1or2Rm1,
&BX_CPU_C::Resolve32Mod1or2Rm2,
@ -123,7 +123,7 @@ static BxExecutePtr_t BxResolve32Mod1or2[8] = {
&BX_CPU_C::Resolve32Mod1or2Rm7
};
static BxExecutePtr_t BxResolve32Mod0Base[8] = {
static BxExecutePtr_tR BxResolve32Mod0Base[8] = {
&BX_CPU_C::Resolve32Mod0Base0,
&BX_CPU_C::Resolve32Mod0Base1,
&BX_CPU_C::Resolve32Mod0Base2,
@ -134,7 +134,7 @@ static BxExecutePtr_t BxResolve32Mod0Base[8] = {
&BX_CPU_C::Resolve32Mod0Base7,
};
static BxExecutePtr_t BxResolve32Mod1or2Base[8] = {
static BxExecutePtr_tR BxResolve32Mod1or2Base[8] = {
&BX_CPU_C::Resolve32Mod1or2Base0,
&BX_CPU_C::Resolve32Mod1or2Base1,
&BX_CPU_C::Resolve32Mod1or2Base2,
@ -145,7 +145,7 @@ static BxExecutePtr_t BxResolve32Mod1or2Base[8] = {
&BX_CPU_C::Resolve32Mod1or2Base7,
};
static BxExecutePtr_t BxResolve64Mod0[16] = {
static BxExecutePtr_tR BxResolve64Mod0[16] = {
&BX_CPU_C::Resolve64Mod0Rm0,
&BX_CPU_C::Resolve64Mod0Rm1,
&BX_CPU_C::Resolve64Mod0Rm2,
@ -164,7 +164,7 @@ static BxExecutePtr_t BxResolve64Mod0[16] = {
&BX_CPU_C::Resolve64Mod0Rm15
};
static BxExecutePtr_t BxResolve64Mod1or2[16] = {
static BxExecutePtr_tR BxResolve64Mod1or2[16] = {
&BX_CPU_C::Resolve64Mod1or2Rm0,
&BX_CPU_C::Resolve64Mod1or2Rm1,
&BX_CPU_C::Resolve64Mod1or2Rm2,
@ -183,7 +183,7 @@ static BxExecutePtr_t BxResolve64Mod1or2[16] = {
&BX_CPU_C::Resolve64Mod1or2Rm15
};
static BxExecutePtr_t BxResolve64Mod0Base[16] = {
static BxExecutePtr_tR BxResolve64Mod0Base[16] = {
&BX_CPU_C::Resolve64Mod0Base0,
&BX_CPU_C::Resolve64Mod0Base1,
&BX_CPU_C::Resolve64Mod0Base2,
@ -202,7 +202,7 @@ static BxExecutePtr_t BxResolve64Mod0Base[16] = {
&BX_CPU_C::Resolve64Mod0Base15,
};
static BxExecutePtr_t BxResolve64Mod1or2Base[16] = {
static BxExecutePtr_tR BxResolve64Mod1or2Base[16] = {
&BX_CPU_C::Resolve64Mod1or2Base0,
&BX_CPU_C::Resolve64Mod1or2Base1,
&BX_CPU_C::Resolve64Mod1or2Base2,

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: resolve16.cc,v 1.8 2002-09-19 19:17:20 kevinlawton Exp $
// $Id: resolve16.cc,v 1.9 2003-03-17 00:41:00 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -35,83 +35,83 @@
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm0(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BX + SI);
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm1(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BX + DI);
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm2(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BP + SI);
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm3(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BP + DI);
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm4(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) SI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm5(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) DI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm6(bxInstruction_c *i)
{
RMAddr(i) = i->displ16u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod0Rm7(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) BX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm0(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BX + SI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm1(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BX + DI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm2(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BP + SI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm3(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BP + DI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm4(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (SI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm5(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (DI + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm6(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BP + (Bit16s) i->displ16u());
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve16Mod1or2Rm7(bxInstruction_c *i)
{
RMAddr(i) = (Bit16u) (BX + (Bit16s) i->displ16u());

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: resolve32.cc,v 1.8 2002-09-19 19:17:20 kevinlawton Exp $
// $Id: resolve32.cc,v 1.9 2003-03-17 00:41:00 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -35,81 +35,81 @@
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm0(bxInstruction_c *i)
{
RMAddr(i) = EAX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm1(bxInstruction_c *i)
{
RMAddr(i) = ECX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm2(bxInstruction_c *i)
{
RMAddr(i) = EDX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm3(bxInstruction_c *i)
{
RMAddr(i) = EBX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm5(bxInstruction_c *i)
{
RMAddr(i) = i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm6(bxInstruction_c *i)
{
RMAddr(i) = ESI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Rm7(bxInstruction_c *i)
{
RMAddr(i) = EDI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm0(bxInstruction_c *i)
{
RMAddr(i) = EAX + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm1(bxInstruction_c *i)
{
RMAddr(i) = ECX + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm2(bxInstruction_c *i)
{
RMAddr(i) = EDX + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm3(bxInstruction_c *i)
{
RMAddr(i) = EBX + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm5(bxInstruction_c *i)
{
RMAddr(i) = EBP + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm6(bxInstruction_c *i)
{
RMAddr(i) = ESI + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Rm7(bxInstruction_c *i)
{
RMAddr(i) = EDI + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base0(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -120,7 +120,7 @@ BX_CPU_C::Resolve32Mod0Base0(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EAX + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base1(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -131,7 +131,7 @@ BX_CPU_C::Resolve32Mod0Base1(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ECX + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base2(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -142,7 +142,7 @@ BX_CPU_C::Resolve32Mod0Base2(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EDX + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base3(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -153,7 +153,7 @@ BX_CPU_C::Resolve32Mod0Base3(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EBX + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base4(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -164,7 +164,7 @@ BX_CPU_C::Resolve32Mod0Base4(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ESP + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base5(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -175,7 +175,7 @@ BX_CPU_C::Resolve32Mod0Base5(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = i->displ32u() + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base6(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -186,7 +186,7 @@ BX_CPU_C::Resolve32Mod0Base6(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ESI + scaled_index;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod0Base7(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -201,7 +201,7 @@ BX_CPU_C::Resolve32Mod0Base7(bxInstruction_c *i)
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base0(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -212,7 +212,7 @@ BX_CPU_C::Resolve32Mod1or2Base0(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EAX + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base1(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -223,7 +223,7 @@ BX_CPU_C::Resolve32Mod1or2Base1(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ECX + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base2(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -234,7 +234,7 @@ BX_CPU_C::Resolve32Mod1or2Base2(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EDX + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base3(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -245,7 +245,7 @@ BX_CPU_C::Resolve32Mod1or2Base3(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EBX + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base4(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -256,7 +256,7 @@ BX_CPU_C::Resolve32Mod1or2Base4(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ESP + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base5(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -267,7 +267,7 @@ BX_CPU_C::Resolve32Mod1or2Base5(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = EBP + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base6(bxInstruction_c *i)
{
Bit32u scaled_index;
@ -278,7 +278,7 @@ BX_CPU_C::Resolve32Mod1or2Base6(bxInstruction_c *i)
scaled_index = 0;
RMAddr(i) = ESI + scaled_index + i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve32Mod1or2Base7(bxInstruction_c *i)
{
Bit32u scaled_index;

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: resolve64.cc,v 1.5 2002-11-19 05:47:43 bdenney Exp $
// $Id: resolve64.cc,v 1.6 2003-03-17 00:41:00 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -36,157 +36,157 @@
#if BX_SUPPORT_X86_64
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm0(bxInstruction_c *i)
{
RMAddr(i) = RAX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm1(bxInstruction_c *i)
{
RMAddr(i) = RCX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm2(bxInstruction_c *i)
{
RMAddr(i) = RDX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm3(bxInstruction_c *i)
{
RMAddr(i) = RBX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm5(bxInstruction_c *i)
{
// eip hasn't been bumped yet when this is called. must choose the saved value.
RMAddr(i) = BX_CPU_THIS_PTR prev_eip + i->ilen() + (Bit32s)i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm6(bxInstruction_c *i)
{
RMAddr(i) = RSI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm7(bxInstruction_c *i)
{
RMAddr(i) = RDI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm8(bxInstruction_c *i)
{
RMAddr(i) = R8;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm9(bxInstruction_c *i)
{
RMAddr(i) = R9;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm10(bxInstruction_c *i)
{
RMAddr(i) = R10;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm11(bxInstruction_c *i)
{
RMAddr(i) = R11;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm12(bxInstruction_c *i)
{
RMAddr(i) = R12;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm13(bxInstruction_c *i)
{
RMAddr(i) = R13;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm14(bxInstruction_c *i)
{
RMAddr(i) = R14;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Rm15(bxInstruction_c *i)
{
RMAddr(i) = R15;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm0(bxInstruction_c *i)
{
RMAddr(i) = RAX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm1(bxInstruction_c *i)
{
RMAddr(i) = RCX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm2(bxInstruction_c *i)
{
RMAddr(i) = RDX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm3(bxInstruction_c *i)
{
RMAddr(i) = RBX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm5(bxInstruction_c *i)
{
RMAddr(i) = RBP + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm6(bxInstruction_c *i)
{
RMAddr(i) = RSI + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm7(bxInstruction_c *i)
{
RMAddr(i) = RDI + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm8(bxInstruction_c *i)
{
RMAddr(i) = R8 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm9(bxInstruction_c *i)
{
RMAddr(i) = R9 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm10(bxInstruction_c *i)
{
RMAddr(i) = R10 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm11(bxInstruction_c *i)
{
RMAddr(i) = R11 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm12(bxInstruction_c *i)
{
RMAddr(i) = R12 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm13(bxInstruction_c *i)
{
RMAddr(i) = R13 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm14(bxInstruction_c *i)
{
RMAddr(i) = R14 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Rm15(bxInstruction_c *i)
{
RMAddr(i) = R15 + (Bit32s) i->displ32u();
@ -194,7 +194,7 @@ BX_CPU_C::Resolve64Mod1or2Rm15(bxInstruction_c *i)
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base0(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -202,7 +202,7 @@ BX_CPU_C::Resolve64Mod0Base0(bxInstruction_c *i)
else
RMAddr(i) = RAX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base1(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -210,7 +210,7 @@ BX_CPU_C::Resolve64Mod0Base1(bxInstruction_c *i)
else
RMAddr(i) = RCX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base2(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -218,7 +218,7 @@ BX_CPU_C::Resolve64Mod0Base2(bxInstruction_c *i)
else
RMAddr(i) = RDX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base3(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -226,7 +226,7 @@ BX_CPU_C::Resolve64Mod0Base3(bxInstruction_c *i)
else
RMAddr(i) = RBX;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base4(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -234,7 +234,7 @@ BX_CPU_C::Resolve64Mod0Base4(bxInstruction_c *i)
else
RMAddr(i) = RSP;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base5(bxInstruction_c *i)
{
if (i->sibIndex() != 4) {
@ -243,7 +243,7 @@ BX_CPU_C::Resolve64Mod0Base5(bxInstruction_c *i)
else
RMAddr(i) = (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base6(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -251,7 +251,7 @@ BX_CPU_C::Resolve64Mod0Base6(bxInstruction_c *i)
else
RMAddr(i) = RSI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base7(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -259,7 +259,7 @@ BX_CPU_C::Resolve64Mod0Base7(bxInstruction_c *i)
else
RMAddr(i) = RDI;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base8(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -267,7 +267,7 @@ BX_CPU_C::Resolve64Mod0Base8(bxInstruction_c *i)
else
RMAddr(i) = R8;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base9(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -275,7 +275,7 @@ BX_CPU_C::Resolve64Mod0Base9(bxInstruction_c *i)
else
RMAddr(i) = R9;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base10(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -283,7 +283,7 @@ BX_CPU_C::Resolve64Mod0Base10(bxInstruction_c *i)
else
RMAddr(i) = R10;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base11(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -291,7 +291,7 @@ BX_CPU_C::Resolve64Mod0Base11(bxInstruction_c *i)
else
RMAddr(i) = R11;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base12(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -299,7 +299,7 @@ BX_CPU_C::Resolve64Mod0Base12(bxInstruction_c *i)
else
RMAddr(i) = R12;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base13(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -307,7 +307,7 @@ BX_CPU_C::Resolve64Mod0Base13(bxInstruction_c *i)
else
RMAddr(i) = R13;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base14(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -315,7 +315,7 @@ BX_CPU_C::Resolve64Mod0Base14(bxInstruction_c *i)
else
RMAddr(i) = R14;
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod0Base15(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -327,7 +327,7 @@ BX_CPU_C::Resolve64Mod0Base15(bxInstruction_c *i)
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base0(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -335,7 +335,7 @@ BX_CPU_C::Resolve64Mod1or2Base0(bxInstruction_c *i)
else
RMAddr(i) = RAX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base1(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -343,7 +343,7 @@ BX_CPU_C::Resolve64Mod1or2Base1(bxInstruction_c *i)
else
RMAddr(i) = RCX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base2(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -351,7 +351,7 @@ BX_CPU_C::Resolve64Mod1or2Base2(bxInstruction_c *i)
else
RMAddr(i) = RDX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base3(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -359,7 +359,7 @@ BX_CPU_C::Resolve64Mod1or2Base3(bxInstruction_c *i)
else
RMAddr(i) = RBX + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base4(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -367,7 +367,7 @@ BX_CPU_C::Resolve64Mod1or2Base4(bxInstruction_c *i)
else
RMAddr(i) = RSP + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base5(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -375,7 +375,7 @@ BX_CPU_C::Resolve64Mod1or2Base5(bxInstruction_c *i)
else
RMAddr(i) = RBP + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base6(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -383,7 +383,7 @@ BX_CPU_C::Resolve64Mod1or2Base6(bxInstruction_c *i)
else
RMAddr(i) = RSI + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base7(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -391,7 +391,7 @@ BX_CPU_C::Resolve64Mod1or2Base7(bxInstruction_c *i)
else
RMAddr(i) = RDI + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base8(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -399,7 +399,7 @@ BX_CPU_C::Resolve64Mod1or2Base8(bxInstruction_c *i)
else
RMAddr(i) = R8 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base9(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -407,7 +407,7 @@ BX_CPU_C::Resolve64Mod1or2Base9(bxInstruction_c *i)
else
RMAddr(i) = R9 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base10(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -415,7 +415,7 @@ BX_CPU_C::Resolve64Mod1or2Base10(bxInstruction_c *i)
else
RMAddr(i) = R10 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base11(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -423,7 +423,7 @@ BX_CPU_C::Resolve64Mod1or2Base11(bxInstruction_c *i)
else
RMAddr(i) = R11 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base12(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -431,7 +431,7 @@ BX_CPU_C::Resolve64Mod1or2Base12(bxInstruction_c *i)
else
RMAddr(i) = R12 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base13(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -439,7 +439,7 @@ BX_CPU_C::Resolve64Mod1or2Base13(bxInstruction_c *i)
else
RMAddr(i) = R13 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base14(bxInstruction_c *i)
{
if (i->sibIndex() != 4)
@ -447,7 +447,7 @@ BX_CPU_C::Resolve64Mod1or2Base14(bxInstruction_c *i)
else
RMAddr(i) = R14 + (Bit32s) i->displ32u();
}
void
void BX_CPP_AttrRegparmN(1)
BX_CPU_C::Resolve64Mod1or2Base15(bxInstruction_c *i)
{
if (i->sibIndex() != 4)

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: stack16.cc,v 1.13 2002-09-20 23:17:51 kevinlawton Exp $
// $Id: stack16.cc,v 1.14 2003-03-17 00:41:00 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -67,7 +67,7 @@ BX_CPU_C::POP_Ew(bxInstruction_c *i)
// If used, the value of ESP after the pop is used to calculate
// the address.
if (i->as32L() && (!i->modC0()) && (i->rm()==4) && (i->sibBase()==4)) {
BX_CPU_CALL_METHOD (i->ResolveModrm, (i));
BX_CPU_CALL_METHODR (i->ResolveModrm, (i));
}
write_virtual_word(i->seg(), RMAddr(i), &val16);
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: stack32.cc,v 1.16 2002-09-24 00:44:56 kevinlawton Exp $
// $Id: stack32.cc,v 1.17 2003-03-17 00:41:01 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -61,7 +61,7 @@ BX_CPU_C::POP_Ed(bxInstruction_c *i)
// the address.
if (i->as32L() && (!i->modC0()) && (i->rm()==4) && (i->sibBase()==4)) {
// call method on BX_CPU_C object
BX_CPU_CALL_METHOD (i->ResolveModrm, (i));
BX_CPU_CALL_METHODR (i->ResolveModrm, (i));
}
write_virtual_dword(i->seg(), RMAddr(i), &val32);
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: stack64.cc,v 1.10 2003-02-08 05:48:01 ptrumpet Exp $
// $Id: stack64.cc,v 1.11 2003-03-17 00:41:01 cbothamy Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -56,7 +56,7 @@ BX_CPU_C::POP_Eq(bxInstruction_c *i)
// the address.
if (i->as64L() && (!i->modC0()) && (i->rm()==4) && (i->sibBase()==4)) {
// call method on BX_CPU_C object
BX_CPU_CALL_METHOD (i->ResolveModrm, (i));
BX_CPU_CALL_METHODR (i->ResolveModrm, (i));
}
write_virtual_qword(i->seg(), RMAddr(i), &val64);
}