summaryrefslogtreecommitdiff
path: root/arch/armv7/thumb2_disasm/il_thumb2.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-08-21 10:15:56 -0400
committerMason Reed <mason@vector35.com>2024-08-21 18:52:04 -0400
commit183a842161b08fe51c92cf7cef5b11ba3d1f03fa (patch)
treea6f52655b8236d6dda58ed01be570ac96251d749 /arch/armv7/thumb2_disasm/il_thumb2.cpp
parent63f5f43ce24cee1e65df1caba02eb700c0ead443 (diff)
Fix thumb2 lifting of REV
Diffstat (limited to 'arch/armv7/thumb2_disasm/il_thumb2.cpp')
-rw-r--r--arch/armv7/thumb2_disasm/il_thumb2.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/armv7/thumb2_disasm/il_thumb2.cpp b/arch/armv7/thumb2_disasm/il_thumb2.cpp
index f92060f9..aec37ed1 100644
--- a/arch/armv7/thumb2_disasm/il_thumb2.cpp
+++ b/arch/armv7/thumb2_disasm/il_thumb2.cpp
@@ -1033,9 +1033,9 @@ bool GetLowLevelILForThumbInstruction(Architecture* arch, LowLevelILFunction& il
case armv7::ARMV7_REV:
il.AddInstruction(WriteILOperand(il, instr, 0,
il.Or(4, il.LogicalShiftRight(4, ReadILOperand(il, instr, 1), il.Const(4, 24)),
- il.Or(4, il.And(4, il.LogicalShiftRight(4, ReadILOperand(il, instr, 1), il.Const(4, 16)), il.Const(4, 0xff)),
- il.Or(4, il.And(4, il.LogicalShiftRight(4, ReadILOperand(il, instr, 1), il.Const(4, 8)), il.Const(4, 0xff)),
- il.And(4, ReadILOperand(il, instr, 1), il.Const(4, 0xff)))))));
+ il.Or(4, il.ShiftLeft(4, il.And(4, il.LogicalShiftRight(4, ReadILOperand(il, instr, 1), il.Const(4, 16)), il.Const(4, 0xff)), il.Const(1, 8)),
+ il.Or(4, il.ShiftLeft(4, il.And(4, il.LogicalShiftRight(4, ReadILOperand(il, instr, 1), il.Const(4, 8)), il.Const(4, 0xff)), il.Const(1, 16)),
+ il.ShiftLeft(4, il.And(4, ReadILOperand(il, instr, 1), il.Const(4, 0xff)), il.Const(1, 24)))))));
break;
case armv7::ARMV7_REV16:
il.AddInstruction(il.SetRegister(2, LLIL_TEMP(0), il.RotateRight(2, il.LowPart(2, ReadILOperand(il, instr, 1)), il.Const(1, 16))));