mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Fixed some constant '1' pointer value handling
This commit is contained in:
parent
e8de8cd7be
commit
8894430f98
1 changed files with 21 additions and 4 deletions
|
@ -5410,6 +5410,10 @@ void BeMCContext::FixOperand(BeMCOperand& operand, int depth)
|
||||||
{
|
{
|
||||||
operand = checkOperand;
|
operand = checkOperand;
|
||||||
}
|
}
|
||||||
|
else if (checkOperand.IsImmediate())
|
||||||
|
{
|
||||||
|
operand = checkOperand;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13186,7 +13190,7 @@ void BeMCContext::DoCodeEmission()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BeMCInstKind_PreserveVolatiles:
|
case BeMCInstKind_PreserveVolatiles:
|
||||||
{
|
{
|
||||||
for (int vregIdx : *inst->mLiveness)
|
for (int vregIdx : *inst->mLiveness)
|
||||||
{
|
{
|
||||||
if (vregIdx >= mLivenessContext.mNumItems)
|
if (vregIdx >= mLivenessContext.mNumItems)
|
||||||
|
@ -13299,6 +13303,11 @@ void BeMCContext::DoCodeEmission()
|
||||||
break;
|
break;
|
||||||
case BeMCInstKind_Mov:
|
case BeMCInstKind_Mov:
|
||||||
{
|
{
|
||||||
|
if (mDebugging)
|
||||||
|
{
|
||||||
|
NOP;
|
||||||
|
}
|
||||||
|
|
||||||
if (inst->mArg1.mKind == BeMCOperandKind_ConstAgg)
|
if (inst->mArg1.mKind == BeMCOperandKind_ConstAgg)
|
||||||
{
|
{
|
||||||
if (mDebugging)
|
if (mDebugging)
|
||||||
|
@ -13314,6 +13323,14 @@ void BeMCContext::DoCodeEmission()
|
||||||
auto arg0Type = GetType(inst->mArg0);
|
auto arg0Type = GetType(inst->mArg0);
|
||||||
auto arg1Type = GetType(inst->mArg1);
|
auto arg1Type = GetType(inst->mArg1);
|
||||||
|
|
||||||
|
// auto arg1 = inst->mArg1;
|
||||||
|
// while (arg1.IsVReg())
|
||||||
|
// {
|
||||||
|
// auto vregInfo = GetVRegInfo(arg1);
|
||||||
|
// if (vregInfo->IsDirectRelTo())
|
||||||
|
// arg1 = vregInfo->mRelTo;
|
||||||
|
// }
|
||||||
|
|
||||||
if (instForm == BeMCInstForm_Unknown)
|
if (instForm == BeMCInstForm_Unknown)
|
||||||
{
|
{
|
||||||
if ((inst->mArg0.IsNativeReg()) && (inst->mArg1.IsNativeReg()))
|
if ((inst->mArg0.IsNativeReg()) && (inst->mArg1.IsNativeReg()))
|
||||||
|
@ -13606,7 +13623,7 @@ void BeMCContext::DoCodeEmission()
|
||||||
if (EmitStdXMMInst(instForm, inst, 0x10, 0x11))
|
if (EmitStdXMMInst(instForm, inst, 0x10, 0x11))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ((inst->mArg0.IsNativeReg()) && (inst->mArg1.IsImmediateInt()))
|
if ((inst->mArg0.IsNativeReg()) && (arg1.IsImmediateInt()))
|
||||||
{
|
{
|
||||||
auto arg0Type = GetType(inst->mArg0);
|
auto arg0Type = GetType(inst->mArg0);
|
||||||
if (arg0Type->mTypeCode == BeTypeCode_Int16)
|
if (arg0Type->mTypeCode == BeTypeCode_Int16)
|
||||||
|
@ -13614,7 +13631,7 @@ void BeMCContext::DoCodeEmission()
|
||||||
Emit(0x66);
|
Emit(0x66);
|
||||||
EmitREX(BeMCOperand(), inst->mArg0, false);
|
EmitREX(BeMCOperand(), inst->mArg0, false);
|
||||||
Emit(0xB8 + EncodeRegNum(inst->mArg0.mReg));
|
Emit(0xB8 + EncodeRegNum(inst->mArg0.mReg));
|
||||||
mOut.Write((int16)inst->mArg1.mImmediate);
|
mOut.Write((int16)arg1.mImmediate);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if ((arg0Type->mTypeCode == BeTypeCode_Int32) || (arg0Type->mTypeCode == BeTypeCode_Int64))
|
else if ((arg0Type->mTypeCode == BeTypeCode_Int32) || (arg0Type->mTypeCode == BeTypeCode_Int64))
|
||||||
|
@ -15773,7 +15790,7 @@ void BeMCContext::Generate(BeFunction* function)
|
||||||
mDbgPreferredRegs[32] = X64Reg_R8;*/
|
mDbgPreferredRegs[32] = X64Reg_R8;*/
|
||||||
|
|
||||||
//mDbgPreferredRegs[8] = X64Reg_RAX;
|
//mDbgPreferredRegs[8] = X64Reg_RAX;
|
||||||
mDebugging = (function->mName == "?SetDefaults@KeySettings@BeefTest@bf@@QEAAXXZ");
|
//mDebugging = (function->mName == "??$EmitNow@UInitialize@CoreEvents@Atma@bf@@@Emitter@Atma@bf@@QEAAXUInitialize@CoreEvents@Atma@bf@@@Z");
|
||||||
// || (function->mName == "?MethodA@TestProgram@BeefTest@bf@@CAXXZ");
|
// || (function->mName == "?MethodA@TestProgram@BeefTest@bf@@CAXXZ");
|
||||||
// || (function->mName == "?Hey@Blurg@bf@@SAXXZ")
|
// || (function->mName == "?Hey@Blurg@bf@@SAXXZ")
|
||||||
// ;
|
// ;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue