From fde1241ce928d38c2031c827ae0ddee5c6f5af0f Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Thu, 4 Jun 2026 16:36:52 -0700 Subject: Add abs, min, and max instructions --- python/lowlevelil.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'python/lowlevelil.py') diff --git a/python/lowlevelil.py b/python/lowlevelil.py index ce9770f2..9f601fd4 100644 --- a/python/lowlevelil.py +++ b/python/lowlevelil.py @@ -383,7 +383,13 @@ class LowLevelILInstruction(BaseILInstruction): ("src", "expr") ], LowLevelILOperation.LLIL_CTZ: [("src", "expr")], LowLevelILOperation.LLIL_RBIT: [ ("src", "expr") - ], LowLevelILOperation.LLIL_CLS: [("src", "expr")], LowLevelILOperation.LLIL_SX: [ + ], LowLevelILOperation.LLIL_CLS: [("src", "expr")], LowLevelILOperation.LLIL_MINS: [ + ("left", "expr"), ("right", "expr") + ], LowLevelILOperation.LLIL_MAXS: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_MINU: [ + ("left", "expr"), ("right", "expr") + ], LowLevelILOperation.LLIL_MAXU: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_ABS: [ + ("src", "expr") + ], LowLevelILOperation.LLIL_SX: [ ("src", "expr") ], LowLevelILOperation.LLIL_ZX: [("src", "expr")], LowLevelILOperation.LLIL_LOW_PART: [ ("src", "expr") @@ -1398,6 +1404,31 @@ class LowLevelILCls(LowLevelILUnaryBase, Arithmetic): pass +@dataclass(frozen=True, repr=False, eq=False) +class LowLevelILMins(LowLevelILBinaryBase, Arithmetic, Signed): + pass + + +@dataclass(frozen=True, repr=False, eq=False) +class LowLevelILMaxs(LowLevelILBinaryBase, Arithmetic, Signed): + pass + + +@dataclass(frozen=True, repr=False, eq=False) +class LowLevelILMinu(LowLevelILBinaryBase, Arithmetic): + pass + + +@dataclass(frozen=True, repr=False, eq=False) +class LowLevelILMaxu(LowLevelILBinaryBase, Arithmetic): + pass + + +@dataclass(frozen=True, repr=False, eq=False) +class LowLevelILAbs(LowLevelILUnaryBase, Arithmetic): + pass + + @dataclass(frozen=True, repr=False, eq=False) class LowLevelILSx(LowLevelILUnaryBase, Arithmetic): pass @@ -3174,6 +3205,11 @@ ILInstruction:Dict[LowLevelILOperation, LowLevelILInstruction] = { # type: igno LowLevelILOperation.LLIL_CTZ: LowLevelILCtz, # [("src", "expr")], LowLevelILOperation.LLIL_RBIT: LowLevelILRbit, # [("src", "expr")], LowLevelILOperation.LLIL_CLS: LowLevelILCls, # [("src", "expr")], + LowLevelILOperation.LLIL_MINS: LowLevelILMins, # [("left", "expr"), ("right", "expr")], + LowLevelILOperation.LLIL_MAXS: LowLevelILMaxs, # [("left", "expr"), ("right", "expr")], + LowLevelILOperation.LLIL_MINU: LowLevelILMinu, # [("left", "expr"), ("right", "expr")], + LowLevelILOperation.LLIL_MAXU: LowLevelILMaxu, # [("left", "expr"), ("right", "expr")], + LowLevelILOperation.LLIL_ABS: LowLevelILAbs, # [("src", "expr")], LowLevelILOperation.LLIL_SX: LowLevelILSx, # [("src", "expr")], LowLevelILOperation.LLIL_ZX: LowLevelILZx, # [("src", "expr")], LowLevelILOperation.LLIL_LOW_PART: LowLevelILLowPart, # [("src", "expr")], -- cgit v1.3.1