From 73ed4fdd351e478f03fdc3607ad79f9aebcec78c Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 23 Oct 2024 05:04:23 -0400 Subject: [PATCH] Respect rmInfo.mBScale in const agg movs --- IDEHelper/Backend/BeMCContext.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/IDEHelper/Backend/BeMCContext.cpp b/IDEHelper/Backend/BeMCContext.cpp index 3d565a1a..b203c8d1 100644 --- a/IDEHelper/Backend/BeMCContext.cpp +++ b/IDEHelper/Backend/BeMCContext.cpp @@ -12707,7 +12707,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // lea rdi, EmitREX(BeMCOperand::FromReg(X64Reg_RDI), dest, true); Emit(0x8D); - EmitModRMRel(EncodeRegNum(X64Reg_RDI), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + curOfs); + EmitModRMRel(EncodeRegNum(X64Reg_RDI), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + curOfs); // mov al, Emit(0xB0); Emit(val); @@ -12737,7 +12737,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // mov , R11 EmitREX(BeMCOperand::FromReg(X64Reg_R11), dest, true); Emit(0x89); - EmitModRMRel(EncodeRegNum(X64Reg_R11), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + curOfs); + EmitModRMRel(EncodeRegNum(X64Reg_R11), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + curOfs); curOfs += 8; } @@ -12750,7 +12750,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // mov , R11d EmitREX(BeMCOperand::FromReg(X64Reg_R11D), dest, false); Emit(0x89); - EmitModRMRel(EncodeRegNum(X64Reg_R11D), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + curOfs); + EmitModRMRel(EncodeRegNum(X64Reg_R11D), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + curOfs); } for (; curOfs <= memSize - 2; curOfs += 2) @@ -12762,7 +12762,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // mov , R11w Emit(0x66); EmitREX(BeMCOperand::FromReg(X64Reg_R11W), dest, false); Emit(0x89); - EmitModRMRel(EncodeRegNum(X64Reg_R11W), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + curOfs); + EmitModRMRel(EncodeRegNum(X64Reg_R11W), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + curOfs); } for (; curOfs <= memSize - 1; curOfs += 1) @@ -12774,7 +12774,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // mov , R11b EmitREX(BeMCOperand::FromReg(X64Reg_R11B), dest, false); Emit(0x89 - 1); - EmitModRMRel(EncodeRegNum(X64Reg_R11B), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + curOfs); + EmitModRMRel(EncodeRegNum(X64Reg_R11B), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + curOfs); } for (auto constVal : constData.mConsts) @@ -12798,7 +12798,7 @@ void BeMCContext::EmitAggMov(const BeMCOperand& dest, const BeMCOperand& src) // mov , R11 EmitREX(BeMCOperand::FromReg(X64Reg_R11), dest, true); Emit(0x89); - EmitModRMRel(EncodeRegNum(X64Reg_R11), rmInfo.mRegA, rmInfo.mRegB, 1, rmInfo.mDisp + constVal.mIdx); + EmitModRMRel(EncodeRegNum(X64Reg_R11), rmInfo.mRegA, rmInfo.mRegB, rmInfo.mBScale, rmInfo.mDisp + constVal.mIdx); } }