1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Fixed xor ah, ah emission

This commit is contained in:
Brian Fiete 2022-02-15 11:01:28 -05:00
parent 868700b0dd
commit 53bcd5c6fc

View file

@ -13728,12 +13728,24 @@ void BeMCContext::DoCodeEmission()
} }
}*/ }*/
else if ((inst->mArg0.IsNativeReg()) && (inst->mArg1.IsZero())) else if ((inst->mArg0.IsNativeReg()) && (inst->mArg1.IsZero()))
{
auto type = GetType(inst->mArg0);
if (type->mSize == 1)
{ {
// Emit as XOR <arg0>, <arg0> // Emit as XOR <arg0>, <arg0>
EmitREX(inst->mArg0, inst->mArg0, GetType(inst->mArg0)->mSize == 8); EmitREX(inst->mArg0, inst->mArg0, false);
mOut.Write((uint8)0x30); // r, r/m64
EmitModRM(inst->mArg0, inst->mArg0);
}
else
{
// Emit as XOR <arg0>, <arg0>
EmitREX(inst->mArg0, inst->mArg0, type->mSize == 8);
mOut.Write((uint8)0x33); // r, r/m64 mOut.Write((uint8)0x33); // r, r/m64
EmitModRM(inst->mArg0, inst->mArg0); EmitModRM(inst->mArg0, inst->mArg0);
} }
}
else else
{ {
switch (instForm) switch (instForm)
@ -16078,7 +16090,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 == "?InitDecHexDigits@NumberFormatter@System@bf@@AEAAX_K@Z"); mDebugging = (function->mName == "?Main@TestProgram@BeefTest@bf@@SATint@@PEAV?$Array1@PEAVString@System@bf@@@System@3@@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")
// ; // ;