[Project64] Update Recompiler Ops.cpp to use standard types

This commit is contained in:
zilmar 2015-11-10 06:56:28 +11:00
parent c33e7e7958
commit 23210e759a
4 changed files with 6508 additions and 5073 deletions

View File

@ -612,7 +612,7 @@ void CCodeSection::GenerateSectionLinkage()
{ {
JumpInfo[i]->FallThrough = false; JumpInfo[i]->FallThrough = false;
JmpLabel32(JumpInfo[i]->BranchLabel.c_str(), 0); JmpLabel32(JumpInfo[i]->BranchLabel.c_str(), 0);
JumpInfo[i]->LinkLocation = (DWORD*)(m_RecompPos - 4); JumpInfo[i]->LinkLocation = (uint32_t*)(m_RecompPos - 4);
} }
} }
} }
@ -638,7 +638,7 @@ void CCodeSection::GenerateSectionLinkage()
{ {
JumpInfo[i]->FallThrough = false; JumpInfo[i]->FallThrough = false;
JmpLabel32(JumpInfo[i]->BranchLabel.c_str(), 0); JmpLabel32(JumpInfo[i]->BranchLabel.c_str(), 0);
JumpInfo[i]->LinkLocation = (DWORD *)(m_RecompPos - 4); JumpInfo[i]->LinkLocation = (uint32_t *)(m_RecompPos - 4);
} }
} }
@ -2141,7 +2141,7 @@ bool CCodeSection::InheritParentInfo()
Parent = ParentList[CurrentParent].Parent; Parent = ParentList[CurrentParent].Parent;
JumpInfo = ParentList[CurrentParent].JumpInfo; JumpInfo = ParentList[CurrentParent].JumpInfo;
JmpLabel32(Label.c_str(), 0); JmpLabel32(Label.c_str(), 0);
JumpInfo->LinkLocation = (DWORD *)(m_RecompPos - 4); JumpInfo->LinkLocation = (uint32_t *)(m_RecompPos - 4);
JumpInfo->LinkLocation2 = NULL; JumpInfo->LinkLocation2 = NULL;
CurrentParent = i; CurrentParent = i;

View File

@ -10,20 +10,19 @@
****************************************************************************/ ****************************************************************************/
#pragma once #pragma once
class CJumpInfo struct CJumpInfo
{ {
typedef CExitInfo::EXIT_REASON EXIT_REASON; typedef CExitInfo::EXIT_REASON EXIT_REASON;
public: CJumpInfo();
CJumpInfo();
DWORD TargetPC; uint32_t TargetPC;
DWORD JumpPC; uint32_t JumpPC;
stdstr BranchLabel; stdstr BranchLabel;
DWORD * LinkLocation; uint32_t * LinkLocation;
DWORD * LinkLocation2; uint32_t * LinkLocation2;
bool FallThrough; bool FallThrough;
bool PermLoop; bool PermLoop;
bool DoneDelaySlot; //maybe deletable bool DoneDelaySlot; //maybe deletable
CRegInfo RegSet; CRegInfo RegSet;
EXIT_REASON ExitReason; EXIT_REASON ExitReason;
}; };

File diff suppressed because it is too large Load Diff

View File

@ -10,321 +10,319 @@
****************************************************************************/ ****************************************************************************/
#pragma once #pragma once
class CCodeSection; class CCodeSection;
class CRecompilerOps : class CRecompilerOps :
protected CDebugSettings, protected CDebugSettings,
protected CX86Ops, protected CX86Ops,
protected CSystemRegisters, protected CSystemRegisters,
protected CN64SystemSettings, protected CN64SystemSettings,
protected CRecompilerSettings protected CRecompilerSettings
{ {
protected: protected:
enum BRANCH_TYPE enum BRANCH_TYPE
{ {
BranchTypeCop1, BranchTypeRs, BranchTypeRsRt BranchTypeCop1, BranchTypeRs, BranchTypeRsRt
}; };
typedef void ( * BranchFunction )(); typedef void ( * BranchFunction )();
/************************** Branch functions ************************/ /************************** Branch functions ************************/
static void Compile_Branch ( BranchFunction CompareFunc, BRANCH_TYPE BranchType, bool Link); static void Compile_Branch ( BranchFunction CompareFunc, BRANCH_TYPE BranchType, bool Link);
static void Compile_BranchLikely ( BranchFunction CompareFunc, bool Link); static void Compile_BranchLikely ( BranchFunction CompareFunc, bool Link);
static void BNE_Compare(); static void BNE_Compare();
static void BEQ_Compare(); static void BEQ_Compare();
static void BGTZ_Compare(); static void BGTZ_Compare();
static void BLEZ_Compare(); static void BLEZ_Compare();
static void BLTZ_Compare(); static void BLTZ_Compare();
static void BGEZ_Compare(); static void BGEZ_Compare();
static void COP1_BCF_Compare(); static void COP1_BCF_Compare();
static void COP1_BCT_Compare(); static void COP1_BCT_Compare();
/************************* OpCode functions *************************/ /************************* OpCode functions *************************/
static void J (); static void J ();
static void JAL (); static void JAL ();
static void ADDI (); static void ADDI ();
static void ADDIU (); static void ADDIU ();
static void SLTI (); static void SLTI ();
static void SLTIU (); static void SLTIU ();
static void ANDI (); static void ANDI ();
static void ORI (); static void ORI ();
static void XORI (); static void XORI ();
static void LUI (); static void LUI ();
static void DADDIU (); static void DADDIU ();
// static void LDL (); // static void LDL ();
// static void LDR (); // static void LDR ();
// static void LB (); // static void LB ();
// static void LH (); // static void LH ();
// static void LWL (); // static void LWL ();
// static void LW (); // static void LW ();
// static void LBU (); // static void LBU ();
// static void LHU (); // static void LHU ();
// static void LWR (); // static void LWR ();
// static void LWU (); //added by Witten // static void LWU (); //added by Witten
// static void SB (); // static void SB ();
// static void SH (); // static void SH ();
// static void SWL (); // static void SWL ();
// static void SW (); // static void SW ();
// static void SWR (); // static void SWR ();
// static void SDL (); // static void SDL ();
// static void SDR (); // static void SDR ();
static void CACHE (); static void CACHE ();
// static void LL (); // static void LL ();
// static void LWC1 (); // static void LWC1 ();
// static void LDC1 (); // static void LDC1 ();
// static void LD (); // static void LD ();
// static void SC (); // static void SC ();
// static void SWC1 (); // static void SWC1 ();
// static void SDC1 (); // static void SDC1 ();
// static void SD (); // static void SD ();
/********************** R4300i OpCodes: Special **********************/ /********************** R4300i OpCodes: Special **********************/
static void SPECIAL_SLL (); static void SPECIAL_SLL ();
static void SPECIAL_SRL (); static void SPECIAL_SRL ();
static void SPECIAL_SRA (); static void SPECIAL_SRA ();
static void SPECIAL_SLLV (); static void SPECIAL_SLLV ();
static void SPECIAL_SRLV (); static void SPECIAL_SRLV ();
static void SPECIAL_SRAV (); static void SPECIAL_SRAV ();
static void SPECIAL_JR (); static void SPECIAL_JR ();
static void SPECIAL_JALR (); static void SPECIAL_JALR ();
static void SPECIAL_SYSCALL(); static void SPECIAL_SYSCALL();
static void SPECIAL_MFLO (); static void SPECIAL_MFLO ();
static void SPECIAL_MTLO (); static void SPECIAL_MTLO ();
static void SPECIAL_MFHI (); static void SPECIAL_MFHI ();
static void SPECIAL_MTHI (); static void SPECIAL_MTHI ();
static void SPECIAL_DSLLV (); static void SPECIAL_DSLLV ();
static void SPECIAL_DSRLV (); static void SPECIAL_DSRLV ();
static void SPECIAL_DSRAV (); static void SPECIAL_DSRAV ();
static void SPECIAL_MULT (); static void SPECIAL_MULT ();
static void SPECIAL_MULTU (); static void SPECIAL_MULTU ();
static void SPECIAL_DIV (); static void SPECIAL_DIV ();
static void SPECIAL_DIVU (); static void SPECIAL_DIVU ();
static void SPECIAL_DMULT (); static void SPECIAL_DMULT ();
static void SPECIAL_DMULTU (); static void SPECIAL_DMULTU ();
static void SPECIAL_DDIV (); static void SPECIAL_DDIV ();
static void SPECIAL_DDIVU (); static void SPECIAL_DDIVU ();
static void SPECIAL_ADD (); static void SPECIAL_ADD ();
static void SPECIAL_ADDU (); static void SPECIAL_ADDU ();
static void SPECIAL_SUB (); static void SPECIAL_SUB ();
static void SPECIAL_SUBU (); static void SPECIAL_SUBU ();
static void SPECIAL_AND (); static void SPECIAL_AND ();
static void SPECIAL_OR (); static void SPECIAL_OR ();
static void SPECIAL_XOR (); static void SPECIAL_XOR ();
static void SPECIAL_NOR (); static void SPECIAL_NOR ();
static void SPECIAL_SLT (); static void SPECIAL_SLT ();
static void SPECIAL_SLTU (); static void SPECIAL_SLTU ();
static void SPECIAL_DADD (); static void SPECIAL_DADD ();
static void SPECIAL_DADDU (); static void SPECIAL_DADDU ();
static void SPECIAL_DSUB (); static void SPECIAL_DSUB ();
static void SPECIAL_DSUBU (); static void SPECIAL_DSUBU ();
static void SPECIAL_DSLL (); static void SPECIAL_DSLL ();
static void SPECIAL_DSRL (); static void SPECIAL_DSRL ();
static void SPECIAL_DSRA (); static void SPECIAL_DSRA ();
static void SPECIAL_DSLL32 (); static void SPECIAL_DSLL32 ();
static void SPECIAL_DSRL32 (); static void SPECIAL_DSRL32 ();
static void SPECIAL_DSRA32 (); static void SPECIAL_DSRA32 ();
/************************** COP0 functions **************************/ /************************** COP0 functions **************************/
static void COP0_MF (); static void COP0_MF ();
static void COP0_MT (); static void COP0_MT ();
/************************** COP0 CO functions ***********************/ /************************** COP0 CO functions ***********************/
static void COP0_CO_TLBR (); static void COP0_CO_TLBR ();
static void COP0_CO_TLBWI (); static void COP0_CO_TLBWI ();
static void COP0_CO_TLBWR (); static void COP0_CO_TLBWR ();
static void COP0_CO_TLBP (); static void COP0_CO_TLBP ();
static void COP0_CO_ERET (); static void COP0_CO_ERET ();
/************************** COP1 functions **************************/ /************************** COP1 functions **************************/
static void COP1_MF (); static void COP1_MF ();
static void COP1_DMF (); static void COP1_DMF ();
static void COP1_CF (); static void COP1_CF ();
static void COP1_MT (); static void COP1_MT ();
static void COP1_DMT (); static void COP1_DMT ();
static void COP1_CT (); static void COP1_CT ();
/************************** COP1: S functions ************************/ /************************** COP1: S functions ************************/
static void COP1_S_ADD (); static void COP1_S_ADD ();
static void COP1_S_SUB (); static void COP1_S_SUB ();
static void COP1_S_MUL (); static void COP1_S_MUL ();
static void COP1_S_DIV (); static void COP1_S_DIV ();
static void COP1_S_ABS (); static void COP1_S_ABS ();
static void COP1_S_NEG (); static void COP1_S_NEG ();
static void COP1_S_SQRT (); static void COP1_S_SQRT ();
static void COP1_S_MOV (); static void COP1_S_MOV ();
static void COP1_S_TRUNC_L (); static void COP1_S_TRUNC_L ();
static void COP1_S_CEIL_L (); //added by Witten static void COP1_S_CEIL_L (); //added by Witten
static void COP1_S_FLOOR_L (); //added by Witten static void COP1_S_FLOOR_L (); //added by Witten
static void COP1_S_ROUND_W (); static void COP1_S_ROUND_W ();
static void COP1_S_TRUNC_W (); static void COP1_S_TRUNC_W ();
static void COP1_S_CEIL_W (); //added by Witten static void COP1_S_CEIL_W (); //added by Witten
static void COP1_S_FLOOR_W (); static void COP1_S_FLOOR_W ();
static void COP1_S_CVT_D (); static void COP1_S_CVT_D ();
static void COP1_S_CVT_W (); static void COP1_S_CVT_W ();
static void COP1_S_CVT_L (); static void COP1_S_CVT_L ();
static void COP1_S_CMP (); static void COP1_S_CMP ();
/************************** COP1: D functions ************************/ /************************** COP1: D functions ************************/
static void COP1_D_ADD (); static void COP1_D_ADD ();
static void COP1_D_SUB (); static void COP1_D_SUB ();
static void COP1_D_MUL (); static void COP1_D_MUL ();
static void COP1_D_DIV (); static void COP1_D_DIV ();
static void COP1_D_ABS (); static void COP1_D_ABS ();
static void COP1_D_NEG (); static void COP1_D_NEG ();
static void COP1_D_SQRT (); static void COP1_D_SQRT ();
static void COP1_D_MOV (); static void COP1_D_MOV ();
static void COP1_D_TRUNC_L (); //added by Witten static void COP1_D_TRUNC_L (); //added by Witten
static void COP1_D_CEIL_L (); //added by Witten static void COP1_D_CEIL_L (); //added by Witten
static void COP1_D_FLOOR_L (); //added by Witten static void COP1_D_FLOOR_L (); //added by Witten
static void COP1_D_ROUND_W (); static void COP1_D_ROUND_W ();
static void COP1_D_TRUNC_W (); static void COP1_D_TRUNC_W ();
static void COP1_D_CEIL_W (); //added by Witten static void COP1_D_CEIL_W (); //added by Witten
static void COP1_D_FLOOR_W (); //added by Witten static void COP1_D_FLOOR_W (); //added by Witten
static void COP1_D_CVT_S (); static void COP1_D_CVT_S ();
static void COP1_D_CVT_W (); static void COP1_D_CVT_W ();
static void COP1_D_CVT_L (); static void COP1_D_CVT_L ();
static void COP1_D_CMP (); static void COP1_D_CMP ();
/************************** COP1: W functions ************************/ /************************** COP1: W functions ************************/
static void COP1_W_CVT_S (); static void COP1_W_CVT_S ();
static void COP1_W_CVT_D (); static void COP1_W_CVT_D ();
/************************** COP1: L functions ************************/ /************************** COP1: L functions ************************/
static void COP1_L_CVT_S (); static void COP1_L_CVT_S ();
static void COP1_L_CVT_D (); static void COP1_L_CVT_D ();
/************************** Other functions **************************/ /************************** Other functions **************************/
static void UnknownOpcode (); static void UnknownOpcode ();
static void BeforeCallDirect(CRegInfo & RegSet);
static void AfterCallDirect(CRegInfo & RegSet);
static void EnterCodeBlock();
static void ExitCodeBlock();
static void CompileReadTLBMiss(uint32_t VirtualAddress, x86Reg LookUpReg);
static void CompileReadTLBMiss(x86Reg AddressReg, x86Reg LookUpReg);
static void CompileWriteTLBMiss(x86Reg AddressReg, x86Reg LookUpReg);
static void UpdateSyncCPU(CRegInfo & RegSet, uint32_t Cycles);
static void UpdateCounters(CRegInfo & RegSet, bool CheckTimer, bool ClearValues = false);
static void CompileSystemCheck(uint32_t TargetPC, const CRegInfo & RegSet);
static void ChangeDefaultRoundingModel();
static void OverflowDelaySlot(bool TestTimer);
static void BeforeCallDirect(CRegInfo & RegSet); static STEP_TYPE m_NextInstruction;
static void AfterCallDirect(CRegInfo & RegSet); static uint32_t m_CompilePC;
static void EnterCodeBlock(); static OPCODE m_Opcode;
static void ExitCodeBlock(); static CRegInfo m_RegWorkingSet;
static void CompileReadTLBMiss(DWORD VirtualAddress, x86Reg LookUpReg); static uint32_t m_BranchCompare;
static void CompileReadTLBMiss(x86Reg AddressReg, x86Reg LookUpReg); static CCodeSection * m_Section;
static void CompileWriteTLBMiss(x86Reg AddressReg, x86Reg LookUpReg);
static void UpdateSyncCPU(CRegInfo & RegSet, DWORD Cycles);
static void UpdateCounters(CRegInfo & RegSet, bool CheckTimer, bool ClearValues = false);
static void CompileSystemCheck(DWORD TargetPC, const CRegInfo & RegSet);
static void ChangeDefaultRoundingModel();
static void OverflowDelaySlot(bool TestTimer);
/********* Helper Functions *********/
typedef CRegInfo::REG_STATE REG_STATE;
static REG_STATE GetMipsRegState ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegState(Reg); }
static uint64_t GetMipsReg ( int32_t Reg ) { return m_RegWorkingSet.GetMipsReg(Reg); }
static int64_t GetMipsReg_S ( int32_t Reg ) { return m_RegWorkingSet.GetMipsReg_S(Reg); }
static uint32_t GetMipsRegLo ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegLo(Reg); }
static int32_t GetMipsRegLo_S ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegLo_S(Reg); }
static uint32_t GetMipsRegHi ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegHi(Reg); }
static int32_t GetMipsRegHi_S ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegHi_S(Reg); }
static CX86Ops::x86Reg GetMipsRegMapLo ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegMapLo(Reg); }
static CX86Ops::x86Reg GetMipsRegMapHi ( int32_t Reg ) { return m_RegWorkingSet.GetMipsRegMapHi(Reg); }
static STEP_TYPE m_NextInstruction; static bool IsKnown ( int32_t Reg ) { return m_RegWorkingSet.IsKnown(Reg); }
static DWORD m_CompilePC; static bool IsUnknown ( int32_t Reg ) { return m_RegWorkingSet.IsUnknown(Reg); }
static OPCODE m_Opcode; static bool IsMapped ( int32_t Reg ) { return m_RegWorkingSet.IsMapped(Reg); }
static CRegInfo m_RegWorkingSet; static bool IsConst ( int32_t Reg ) { return m_RegWorkingSet.IsConst(Reg); }
static DWORD m_BranchCompare; static bool IsSigned ( int32_t Reg ) { return m_RegWorkingSet.IsSigned(Reg); }
static CCodeSection * m_Section; static bool IsUnsigned ( int32_t Reg ) { return m_RegWorkingSet.IsUnsigned(Reg); }
static bool Is32Bit ( int32_t Reg ) { return m_RegWorkingSet.Is32Bit(Reg); }
static bool Is64Bit ( int32_t Reg ) { return m_RegWorkingSet.Is64Bit(Reg); }
static bool Is32BitMapped ( int32_t Reg ) { return m_RegWorkingSet.Is32BitMapped(Reg); }
static bool Is64BitMapped ( int32_t Reg ) { return m_RegWorkingSet.Is64BitMapped(Reg); }
/********* Helper Functions *********/ static void FixRoundModel ( CRegInfo::FPU_ROUND RoundMethod )
typedef CRegInfo::REG_STATE REG_STATE; {
m_RegWorkingSet.FixRoundModel(RoundMethod);
}
static void ChangeFPURegFormat ( int32_t Reg, CRegInfo::FPU_STATE OldFormat, CRegInfo::FPU_STATE NewFormat, CRegInfo::FPU_ROUND RoundingModel )
{
m_RegWorkingSet.ChangeFPURegFormat(Reg,OldFormat,NewFormat,RoundingModel);
}
static void Load_FPR_ToTop ( int32_t Reg, int32_t RegToLoad, CRegInfo::FPU_STATE Format)
{
m_RegWorkingSet.Load_FPR_ToTop(Reg,RegToLoad,Format);
}
static bool RegInStack ( int32_t Reg, CRegInfo::FPU_STATE Format )
{
return m_RegWorkingSet.RegInStack(Reg,Format);
}
static x86FpuValues StackPosition ( int32_t Reg )
{
return m_RegWorkingSet.StackPosition(Reg);
}
static void UnMap_AllFPRs()
{
m_RegWorkingSet.UnMap_AllFPRs();
}
static void UnMap_FPR ( uint32_t Reg, bool WriteBackValue )
{
m_RegWorkingSet.UnMap_FPR(Reg,WriteBackValue);
}
static REG_STATE GetMipsRegState ( int Reg ) { return m_RegWorkingSet.GetMipsRegState(Reg); } static x86Reg FreeX86Reg()
static unsigned __int64 GetMipsReg ( int Reg ) { return m_RegWorkingSet.GetMipsReg(Reg); } {
static __int64 GetMipsReg_S ( int Reg ) { return m_RegWorkingSet.GetMipsReg_S(Reg); } return m_RegWorkingSet.FreeX86Reg();
static DWORD GetMipsRegLo ( int Reg ) { return m_RegWorkingSet.GetMipsRegLo(Reg); } }
static long GetMipsRegLo_S ( int Reg ) { return m_RegWorkingSet.GetMipsRegLo_S(Reg); } static x86Reg Free8BitX86Reg()
static DWORD GetMipsRegHi ( int Reg ) { return m_RegWorkingSet.GetMipsRegHi(Reg); } {
static long GetMipsRegHi_S ( int Reg ) { return m_RegWorkingSet.GetMipsRegHi_S(Reg); } return m_RegWorkingSet.Free8BitX86Reg();
static CX86Ops::x86Reg GetMipsRegMapLo ( int Reg ) { return m_RegWorkingSet.GetMipsRegMapLo(Reg); } }
static CX86Ops::x86Reg GetMipsRegMapHi ( int Reg ) { return m_RegWorkingSet.GetMipsRegMapHi(Reg); } static void Map_GPR_32bit ( int32_t Reg, bool SignValue, int32_t MipsRegToLoad )
{
static bool IsKnown ( int Reg ) { return m_RegWorkingSet.IsKnown(Reg); } m_RegWorkingSet.Map_GPR_32bit(Reg,SignValue,MipsRegToLoad);
static bool IsUnknown ( int Reg ) { return m_RegWorkingSet.IsUnknown(Reg); } }
static bool IsMapped ( int Reg ) { return m_RegWorkingSet.IsMapped(Reg); } static void Map_GPR_64bit ( int32_t Reg, int32_t MipsRegToLoad )
static bool IsConst ( int Reg ) { return m_RegWorkingSet.IsConst(Reg); } {
static bool IsSigned ( int Reg ) { return m_RegWorkingSet.IsSigned(Reg); } m_RegWorkingSet.Map_GPR_64bit(Reg,MipsRegToLoad);
static bool IsUnsigned ( int Reg ) { return m_RegWorkingSet.IsUnsigned(Reg); } }
static bool Is32Bit ( int Reg ) { return m_RegWorkingSet.Is32Bit(Reg); } static x86Reg Get_MemoryStack()
static bool Is64Bit ( int Reg ) { return m_RegWorkingSet.Is64Bit(Reg); } {
static bool Is32BitMapped ( int Reg ) { return m_RegWorkingSet.Is32BitMapped(Reg); } return m_RegWorkingSet.Get_MemoryStack();
static bool Is64BitMapped ( int Reg ) { return m_RegWorkingSet.Is64BitMapped(Reg); } }
static x86Reg Map_MemoryStack ( x86Reg Reg, bool bMapRegister, bool LoadValue = true )
static void FixRoundModel ( CRegInfo::FPU_ROUND RoundMethod ) {
{ return m_RegWorkingSet.Map_MemoryStack(Reg,bMapRegister,LoadValue);
m_RegWorkingSet.FixRoundModel(RoundMethod); }
} static x86Reg Map_TempReg ( x86Reg Reg, int32_t MipsReg, bool LoadHiWord )
static void ChangeFPURegFormat ( int Reg, CRegInfo::FPU_STATE OldFormat, CRegInfo::FPU_STATE NewFormat, CRegInfo::FPU_ROUND RoundingModel ) {
{ return m_RegWorkingSet.Map_TempReg(Reg,MipsReg,LoadHiWord);
m_RegWorkingSet.ChangeFPURegFormat(Reg,OldFormat,NewFormat,RoundingModel); }
} static void ProtectGPR ( uint32_t Reg )
static void Load_FPR_ToTop ( int Reg, int RegToLoad, CRegInfo::FPU_STATE Format) {
{ m_RegWorkingSet.ProtectGPR(Reg);
m_RegWorkingSet.Load_FPR_ToTop(Reg,RegToLoad,Format); }
} static void UnProtectGPR ( uint32_t Reg )
static bool RegInStack ( int Reg, CRegInfo::FPU_STATE Format ) {
{ m_RegWorkingSet.UnProtectGPR(Reg);
return m_RegWorkingSet.RegInStack(Reg,Format); }
} static void ResetX86Protection()
static x86FpuValues StackPosition ( int Reg ) {
{ m_RegWorkingSet.ResetX86Protection();
return m_RegWorkingSet.StackPosition(Reg); }
} static x86Reg UnMap_TempReg()
static void UnMap_AllFPRs() {
{ return m_RegWorkingSet.UnMap_TempReg();
m_RegWorkingSet.UnMap_AllFPRs(); }
} static void UnMap_GPR ( uint32_t Reg, bool WriteBackValue )
static void UnMap_FPR ( DWORD Reg, bool WriteBackValue ) {
{ m_RegWorkingSet.UnMap_GPR(Reg,WriteBackValue);
m_RegWorkingSet.UnMap_FPR(Reg,WriteBackValue); }
} static bool UnMap_X86reg ( x86Reg Reg )
{
static x86Reg FreeX86Reg() return m_RegWorkingSet.UnMap_X86reg(Reg);
{ }
return m_RegWorkingSet.FreeX86Reg();
}
static x86Reg Free8BitX86Reg()
{
return m_RegWorkingSet.Free8BitX86Reg();
}
static void Map_GPR_32bit ( int Reg, bool SignValue, int MipsRegToLoad )
{
m_RegWorkingSet.Map_GPR_32bit(Reg,SignValue,MipsRegToLoad);
}
static void Map_GPR_64bit ( int Reg, int MipsRegToLoad )
{
m_RegWorkingSet.Map_GPR_64bit(Reg,MipsRegToLoad);
}
static x86Reg Get_MemoryStack()
{
return m_RegWorkingSet.Get_MemoryStack();
}
static x86Reg Map_MemoryStack ( x86Reg Reg, bool bMapRegister, bool LoadValue = true )
{
return m_RegWorkingSet.Map_MemoryStack(Reg,bMapRegister,LoadValue);
}
static x86Reg Map_TempReg ( x86Reg Reg, int MipsReg, bool LoadHiWord )
{
return m_RegWorkingSet.Map_TempReg(Reg,MipsReg,LoadHiWord);
}
static void ProtectGPR ( DWORD Reg )
{
m_RegWorkingSet.ProtectGPR(Reg);
}
static void UnProtectGPR ( DWORD Reg )
{
m_RegWorkingSet.UnProtectGPR(Reg);
}
static void ResetX86Protection()
{
m_RegWorkingSet.ResetX86Protection();
}
static x86Reg UnMap_TempReg()
{
return m_RegWorkingSet.UnMap_TempReg();
}
static void UnMap_GPR ( DWORD Reg, bool WriteBackValue )
{
m_RegWorkingSet.UnMap_GPR(Reg,WriteBackValue);
}
static bool UnMap_X86reg ( x86Reg Reg )
{
return m_RegWorkingSet.UnMap_X86reg(Reg);
}
public: public:
static DWORD CompilePC() { return m_CompilePC; } static uint32_t CompilePC() { return m_CompilePC; }
}; };