Core: Remove temp usage of Name

This commit is contained in:
zilmar 2022-10-10 13:38:43 +10:30
parent 0ffaf43418
commit 6044222be0
2 changed files with 43 additions and 100 deletions

View File

@ -3921,8 +3921,6 @@ void CX86RecompilerOps::LWC1()
void CX86RecompilerOps::LDC1()
{
char Name[50];
CompileCop1Test();
UnMap_FPR(m_Opcode.ft, false);
@ -3938,14 +3936,12 @@ void CX86RecompilerOps::LDC1()
LW_KnownAddress(TempReg1, Address);
CX86Ops::x86Reg TempReg2 = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], Name, TempReg2);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_D[%d]", m_Opcode.ft).c_str(), TempReg2);
m_Assembler.AddConstToX86Reg(TempReg2, 4);
m_Assembler.MoveX86regToX86Pointer(TempReg1, TempReg2);
LW_KnownAddress(TempReg1, Address + 4);
sprintf(Name, "_FPR_S[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], Name, TempReg2);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_S[%d]", m_Opcode.ft).c_str(), TempReg2);
m_Assembler.MoveX86regToX86Pointer(TempReg1, TempReg2);
}
else
@ -4048,8 +4044,6 @@ void CX86RecompilerOps::SWC1()
void CX86RecompilerOps::SDC1()
{
char Name[50];
CompileCop1Test();
if (IsConst(m_Opcode.base))
@ -4062,14 +4056,12 @@ void CX86RecompilerOps::SDC1()
}
CX86Ops::x86Reg TempReg1 = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], Name, TempReg1);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_D[%d]", m_Opcode.ft).c_str(), TempReg1);
m_Assembler.AddConstToX86Reg(TempReg1, 4);
m_Assembler.MoveX86PointerToX86reg(TempReg1, TempReg1);
SW_Register(TempReg1, Address);
sprintf(Name, "_FPR_D[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], Name, TempReg1);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_D[%d]", m_Opcode.ft).c_str(), TempReg1);
m_Assembler.MoveX86PointerToX86reg(TempReg1, TempReg1);
SW_Register(TempReg1, Address + 4);
return;
@ -7449,28 +7441,22 @@ void CX86RecompilerOps::COP1_MF()
UnMap_FPR(m_Opcode.fs, true);
Map_GPR_32bit(m_Opcode.rt, true, -1);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[100];
sprintf(Name, "_FPR_S[%d]", m_Opcode.fs);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.fs], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.fs], stdstr_f("_FPR_S[%d]", m_Opcode.fs).c_str(), TempReg);
m_Assembler.MoveX86PointerToX86reg(GetMipsRegMapLo(m_Opcode.rt), TempReg);
}
void CX86RecompilerOps::COP1_DMF()
{
CX86Ops::x86Reg TempReg;
char Name[50];
CompileCop1Test();
UnMap_FPR(m_Opcode.fs, true);
Map_GPR_64bit(m_Opcode.rt, -1);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", m_Opcode.fs);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], stdstr_f("_FPR_D[%d]", m_Opcode.fs).c_str(), TempReg);
m_Assembler.AddConstToX86Reg(TempReg, 4);
m_Assembler.MoveX86PointerToX86reg(GetMipsRegMapHi(m_Opcode.rt), TempReg);
sprintf(Name, "_FPR_D[%d]", m_Opcode.fs);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], stdstr_f("_FPR_D[%d]", m_Opcode.fs).c_str(), TempReg);
m_Assembler.MoveX86PointerToX86reg(GetMipsRegMapLo(m_Opcode.rt), TempReg);
}
@ -7501,9 +7487,7 @@ void CX86RecompilerOps::COP1_MT()
}
UnMap_FPR(m_Opcode.fs, true);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[50];
sprintf(Name, "_FPR_S[%d]", m_Opcode.fs);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.fs], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.fs], stdstr_f("_FPR_S[%d]", m_Opcode.fs).c_str(), TempReg);
if (IsConst(m_Opcode.rt))
{
@ -7534,9 +7518,7 @@ void CX86RecompilerOps::COP1_DMT()
}
UnMap_FPR(m_Opcode.fs, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[50];
sprintf(Name, "_FPR_D[%d]", m_Opcode.fs);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.fs], stdstr_f("_FPR_D[%d]", m_Opcode.fs).c_str(), TempReg);
if (IsConst(m_Opcode.rt))
{
@ -7621,9 +7603,7 @@ void CX86RecompilerOps::COP1_S_ADD()
UnMap_FPR(Reg2, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[50];
sprintf(Name, "_FPR_S[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], stdstr_f("_FPR_S[%d]", Reg2).c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Float);
m_Assembler.fpuAddDwordRegPointer(TempReg);
}
@ -7635,7 +7615,6 @@ void CX86RecompilerOps::COP1_S_SUB()
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
CX86Ops::x86Reg TempReg;
char Name[50];
CompileCop1Test();
FixRoundModel(CRegInfo::RoundDefault);
@ -7646,8 +7625,7 @@ void CX86RecompilerOps::COP1_S_SUB()
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Float);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_S[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.ft], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.ft], stdstr_f("_FPR_S[%d]", m_Opcode.ft).c_str(), TempReg);
m_Assembler.fpuSubDwordRegPointer(TempReg);
}
else
@ -7663,8 +7641,7 @@ void CX86RecompilerOps::COP1_S_SUB()
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Float);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_S[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], stdstr_f("_FPR_S[%d]", Reg2).c_str(), TempReg);
m_Assembler.fpuSubDwordRegPointer(TempReg);
}
}
@ -7690,9 +7667,7 @@ void CX86RecompilerOps::COP1_S_MUL()
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Float);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[50];
sprintf(Name, "_FPR_S[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], stdstr_f("_FPR_S[%d]", Reg2).c_str(), TempReg);
m_Assembler.fpuMulDwordRegPointer(TempReg);
}
UnMap_FPR(m_Opcode.fd, true);
@ -7702,7 +7677,6 @@ void CX86RecompilerOps::COP1_S_DIV()
{
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
char Name[50];
CompileCop1Test();
FixRoundModel(CRegInfo::RoundDefault);
@ -7713,8 +7687,7 @@ void CX86RecompilerOps::COP1_S_DIV()
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Float);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_S[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.ft], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[m_Opcode.ft], stdstr_f("_FPR_S[%d]", m_Opcode.ft).c_str(), TempReg);
m_Assembler.fpuDivDwordRegPointer(TempReg);
}
else
@ -7730,8 +7703,7 @@ void CX86RecompilerOps::COP1_S_DIV()
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Float);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_S[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], stdstr_f("_FPR_S[%d]", Reg2).c_str(), TempReg);
m_Assembler.fpuDivDwordRegPointer(TempReg);
}
}
@ -7921,9 +7893,7 @@ void CX86RecompilerOps::COP1_S_CMP()
Load_FPR_ToTop(Reg1, Reg1, CRegInfo::FPU_Float);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
char Name[50];
sprintf(Name, "_FPR_S[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_S[Reg2], stdstr_f("_FPR_S[%d]", Reg2).c_str(), TempReg);
m_Assembler.fpuComDwordRegPointer(TempReg, false);
}
m_Assembler.AndConstToVariable((uint32_t)~FPCSR_C, &_FPCR[31], "_FPCR[31]");
@ -7962,7 +7932,6 @@ void CX86RecompilerOps::COP1_D_ADD()
{
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
char Name[50];
CompileCop1Test();
@ -7977,8 +7946,7 @@ void CX86RecompilerOps::COP1_D_ADD()
UnMap_FPR(Reg2, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], stdstr_f("_FPR_D[%d]", Reg2).c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Double);
m_Assembler.fpuAddQwordRegPointer(TempReg);
}
@ -7989,7 +7957,6 @@ void CX86RecompilerOps::COP1_D_SUB()
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
CX86Ops::x86Reg TempReg;
char Name[50];
CompileCop1Test();
@ -7997,8 +7964,7 @@ void CX86RecompilerOps::COP1_D_SUB()
{
UnMap_FPR(m_Opcode.fd, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_D[%d]", m_Opcode.ft).c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
m_Assembler.fpuSubQwordRegPointer(TempReg);
}
@ -8014,8 +7980,7 @@ void CX86RecompilerOps::COP1_D_SUB()
UnMap_FPR(Reg2, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], stdstr_f("_FPR_D[%d]", Reg2).c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Double);
m_Assembler.fpuSubQwordRegPointer(TempReg);
}
@ -8027,7 +7992,6 @@ void CX86RecompilerOps::COP1_D_MUL()
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
CX86Ops::x86Reg TempReg;
char Name[50];
CompileCop1Test();
FixRoundModel(CRegInfo::RoundDefault);
@ -8042,8 +8006,7 @@ void CX86RecompilerOps::COP1_D_MUL()
UnMap_FPR(Reg2, true);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Double);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], stdstr_f("_FPR_D[%d]", Reg2).c_str(), TempReg);
m_Assembler.fpuMulQwordRegPointer(TempReg);
}
}
@ -8053,7 +8016,6 @@ void CX86RecompilerOps::COP1_D_DIV()
uint32_t Reg1 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.ft : m_Opcode.fs;
uint32_t Reg2 = m_Opcode.ft == m_Opcode.fd ? m_Opcode.fs : m_Opcode.ft;
CX86Ops::x86Reg TempReg;
char Name[50];
CompileCop1Test();
@ -8061,8 +8023,7 @@ void CX86RecompilerOps::COP1_D_DIV()
{
UnMap_FPR(m_Opcode.fd, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", m_Opcode.ft);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[m_Opcode.ft], stdstr_f("_FPR_D[%d]", m_Opcode.ft).c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
m_Assembler.fpuDivQwordRegPointer(TempReg);
}
@ -8077,8 +8038,7 @@ void CX86RecompilerOps::COP1_D_DIV()
{
UnMap_FPR(Reg2, true);
TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], stdstr_f("_FPR_D[%d]").c_str(), TempReg);
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fd, CRegInfo::FPU_Double);
m_Assembler.fpuDivQwordRegPointer(TempReg);
}
@ -8300,12 +8260,9 @@ void CX86RecompilerOps::COP1_D_CMP()
}
else
{
char Name[50];
UnMap_FPR(Reg2, true);
CX86Ops::x86Reg TempReg = Map_TempReg(CX86Ops::x86_Unknown, -1, false, false);
sprintf(Name, "_FPR_D[%d]", Reg2);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], Name, TempReg);
m_Assembler.MoveVariableToX86reg((uint8_t *)&_FPR_D[Reg2], stdstr_f("_FPR_D[%d]", Reg2).c_str(), TempReg);
Load_FPR_ToTop(Reg1, Reg1, CRegInfo::FPU_Double);
m_Assembler.fpuComQwordRegPointer(TempReg, false);
}

View File

@ -290,7 +290,6 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
FixRoundModel(RoundDefault);
}
m_CodeBlock.Log("CurrentRoundingModel: %s FpuRoundingModel(StackTopPos()): %s", RoundingModelName(GetRoundingModel()), RoundingModelName(FpuRoundingModel(StackTopPos())));
int32_t i;
if (RegToLoad < 0)
{
@ -312,7 +311,7 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
{
if ((Reg & 1) != 0)
{
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] == (Reg - 1))
{
@ -326,7 +325,7 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
}
if ((RegToLoad & 1) != 0)
{
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] == (RegToLoad - 1))
{
@ -343,7 +342,7 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
if (Reg == RegToLoad)
{
// If different format then unmap original register from stack
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] != Reg)
{
@ -359,7 +358,7 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
else
{
// If different format then unmap original register from stack
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] != Reg)
{
@ -395,11 +394,12 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
CX86Ops::x86FpuValues RegPos = CX86Ops::x86_ST_Unknown;
for (uint32_t z = 0; z < 8; z++)
{
if (m_x86fpu_MappedTo[z] == Reg)
if (m_x86fpu_MappedTo[z] != Reg)
{
RegPos = (CX86Ops::x86FpuValues)i;
z = 8;
continue;
}
RegPos = (CX86Ops::x86FpuValues)z;
break;
}
if (RegPos == StackTopPos())
@ -425,11 +425,10 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
}
else
{
char Name[50];
CX86Ops::x86Reg TempReg;
UnMap_FPR(m_x86fpu_MappedTo[(StackTopPos() - 1) & 7], true);
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] == RegToLoad)
{
@ -442,23 +441,19 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
switch (Format)
{
case FPU_Dword:
sprintf(Name, "m_FPR_S[%d]", RegToLoad);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad], stdstr_f("m_FPR_S[%d]", RegToLoad).c_str(), TempReg);
m_Assembler.fpuLoadIntegerDwordFromX86Reg(&StackTopPos(), TempReg);
break;
case FPU_Qword:
sprintf(Name, "m_FPR_D[%d]", RegToLoad);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad], stdstr_f("m_FPR_D[%d]", RegToLoad).c_str(), TempReg);
m_Assembler.fpuLoadIntegerQwordFromX86Reg(&StackTopPos(), TempReg);
break;
case FPU_Float:
sprintf(Name, "m_FPR_S[%d]", RegToLoad);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad], stdstr_f("m_FPR_S[%d]", RegToLoad).c_str(), TempReg);
m_Assembler.fpuLoadDwordFromX86Reg(&StackTopPos(), TempReg);
break;
case FPU_Double:
sprintf(Name, "m_FPR_D[%d]", RegToLoad);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad], stdstr_f("m_FPR_D[%d]", RegToLoad).c_str(), TempReg);
m_Assembler.fpuLoadQwordFromX86Reg(&StackTopPos(), TempReg);
break;
default:
@ -477,9 +472,7 @@ void CX86RegInfo::Load_FPR_ToTop(int32_t Reg, int32_t RegToLoad, FPU_STATE Forma
CX86Ops::x86FpuValues CX86RegInfo::StackPosition(int32_t Reg)
{
int32_t i;
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] == Reg)
{
@ -1220,14 +1213,11 @@ void CX86RegInfo::UnMap_AllFPRs()
void CX86RegInfo::UnMap_FPR(int32_t Reg, bool WriteBackValue)
{
char Name[50];
int32_t i;
if (Reg < 0)
{
return;
}
for (i = 0; i < 8; i++)
for (int32_t i = 0; i < 8; i++)
{
if (m_x86fpu_MappedTo[i] != Reg)
{
@ -1269,23 +1259,19 @@ void CX86RegInfo::UnMap_FPR(int32_t Reg, bool WriteBackValue)
switch (m_x86fpu_State[StackTopPos()])
{
case FPU_Dword:
sprintf(Name, "_FPR_S[%d]", m_x86fpu_MappedTo[StackTopPos()]);
m_Assembler.MoveVariableToX86reg(&_FPR_S[m_x86fpu_MappedTo[StackTopPos()]], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&_FPR_S[m_x86fpu_MappedTo[StackTopPos()]], stdstr_f("_FPR_S[%d]", m_x86fpu_MappedTo[StackTopPos()]).c_str(), TempReg);
m_Assembler.fpuStoreIntegerDwordFromX86Reg(&StackTopPos(), TempReg, true);
break;
case FPU_Qword:
sprintf(Name, "_FPR_D[%d]", m_x86fpu_MappedTo[StackTopPos()]);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_x86fpu_MappedTo[StackTopPos()]], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_x86fpu_MappedTo[StackTopPos()]], stdstr_f("_FPR_D[%d]", m_x86fpu_MappedTo[StackTopPos()]).c_str(), TempReg);
m_Assembler.fpuStoreIntegerQwordFromX86Reg(&StackTopPos(), TempReg, true);
break;
case FPU_Float:
sprintf(Name, "_FPR_S[%d]", m_x86fpu_MappedTo[StackTopPos()]);
m_Assembler.MoveVariableToX86reg(&_FPR_S[m_x86fpu_MappedTo[StackTopPos()]], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&_FPR_S[m_x86fpu_MappedTo[StackTopPos()]], stdstr_f("_FPR_S[%d]", m_x86fpu_MappedTo[StackTopPos()]).c_str(), TempReg);
m_Assembler.fpuStoreDwordFromX86Reg(&StackTopPos(), TempReg, true);
break;
case FPU_Double:
sprintf(Name, "_FPR_D[%d]", m_x86fpu_MappedTo[StackTopPos()]);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_x86fpu_MappedTo[StackTopPos()]], Name, TempReg);
m_Assembler.MoveVariableToX86reg(&_FPR_D[m_x86fpu_MappedTo[StackTopPos()]], stdstr_f("_FPR_D[%d]", m_x86fpu_MappedTo[StackTopPos()]).c_str(), TempReg);
m_Assembler.fpuStoreQwordFromX86Reg(&StackTopPos(), TempReg, true);
break;
default: