diff options
| -rw-r--r-- | binaryninjaapi.h | 138 | ||||
| -rw-r--r-- | lowlevelil.cpp | 138 |
2 files changed, 139 insertions, 137 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 051e4fa0..1030e803 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -794,6 +794,8 @@ namespace BinaryNinja }; class LowLevelILFunction; + + typedef size_t ExprId; class Architecture: public RefCountObject { @@ -1181,82 +1183,82 @@ namespace BinaryNinja uint64_t GetCurrentAddress() const; void SetCurrentAddress(uint64_t addr); - size_t AddExpr(BNLowLevelILOperation operation, size_t size, uint32_t flags, - uint64_t a = 0, uint64_t b = 0, uint64_t c = 0, uint64_t d = 0); - size_t AddInstruction(size_t expr); + ExprId AddExpr(BNLowLevelILOperation operation, size_t size, uint32_t flags, + ExprId a = 0, ExprId b = 0, ExprId c = 0, ExprId d = 0); + ExprId AddInstruction(ExprId expr); - size_t Nop(); - size_t SetRegister(size_t size, uint32_t reg, uint64_t val); - size_t SetRegisterSplit(size_t size, uint32_t high, uint32_t low, uint64_t val); - size_t SetFlag(uint32_t flag, uint64_t val); - size_t Load(size_t size, uint64_t addr); - size_t Store(size_t size, uint64_t addr, uint64_t val); - size_t Push(size_t size, uint64_t val); - size_t Pop(size_t size); - size_t Register(size_t size, uint32_t reg); - size_t Const(size_t size, uint64_t val); - size_t Flag(uint32_t reg); - size_t Add(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t AddCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t Sub(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t SubBorrow(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t And(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t Or(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t Xor(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t ShiftLeft(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t LogicalShiftRight(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t ArithShiftRight(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t RotateLeft(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t RotateLeftCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t RotateRight(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t RotateRightCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t Mult(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t MultDoublePrecUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t MultDoublePrecSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t DivUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t DivDoublePrecUnsigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags = 0); - size_t DivSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t DivDoublePrecSigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags = 0); - size_t ModUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t ModDoublePrecUnsigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags = 0); - size_t ModSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags = 0); - size_t ModDoublePrecSigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags = 0); - size_t Neg(size_t size, uint64_t a, uint32_t flags = 0); - size_t Not(size_t size, uint64_t a, uint32_t flags = 0); - size_t SignExtend(size_t size, uint64_t a); - size_t ZeroExtend(size_t size, uint64_t a); - size_t Jump(uint64_t dest); - size_t Call(uint64_t dest); - size_t Return(size_t dest); - size_t NoReturn(); - size_t FlagCondition(BNLowLevelILFlagCondition cond); - size_t CompareEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareNotEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareSignedLessThan(size_t size, uint64_t a, uint64_t b); - size_t CompareUnsignedLessThan(size_t size, uint64_t a, uint64_t b); - size_t CompareSignedLessEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareUnsignedLessEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareSignedGreaterEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareUnsignedGreaterEqual(size_t size, uint64_t a, uint64_t b); - size_t CompareSignedGreaterThan(size_t size, uint64_t a, uint64_t b); - size_t CompareUnsignedGreaterThan(size_t size, uint64_t a, uint64_t b); - size_t SystemCall(); - size_t Breakpoint(); - size_t Trap(uint32_t num); - size_t Undefined(); - size_t Unimplemented(); - size_t UnimplementedMemoryRef(size_t size, uint64_t addr); + ExprId Nop(); + ExprId SetRegister(size_t size, uint32_t reg, ExprId val); + ExprId SetRegisterSplit(size_t size, uint32_t high, uint32_t low, ExprId val); + ExprId SetFlag(uint32_t flag, ExprId val); + ExprId Load(size_t size, ExprId addr); + ExprId Store(size_t size, ExprId addr, ExprId val); + ExprId Push(size_t size, ExprId val); + ExprId Pop(size_t size); + ExprId Register(size_t size, uint32_t reg); + ExprId Const(size_t size, uint64_t val); + ExprId Flag(uint32_t reg); + ExprId Add(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId AddCarry(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId Sub(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId SubBorrow(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId And(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId Or(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId Xor(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId ShiftLeft(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId LogicalShiftRight(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId ArithShiftRight(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId RotateLeft(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId RotateLeftCarry(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId RotateRight(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId RotateRightCarry(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId Mult(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId MultDoublePrecUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId MultDoublePrecSigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId DivUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId DivDoublePrecUnsigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags = 0); + ExprId DivSigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId DivDoublePrecSigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags = 0); + ExprId ModUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId ModDoublePrecUnsigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags = 0); + ExprId ModSigned(size_t size, ExprId a, ExprId b, uint32_t flags = 0); + ExprId ModDoublePrecSigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags = 0); + ExprId Neg(size_t size, ExprId a, uint32_t flags = 0); + ExprId Not(size_t size, ExprId a, uint32_t flags = 0); + ExprId SignExtend(size_t size, ExprId a); + ExprId ZeroExtend(size_t size, ExprId a); + ExprId Jump(ExprId dest); + ExprId Call(ExprId dest); + ExprId Return(size_t dest); + ExprId NoReturn(); + ExprId FlagCondition(BNLowLevelILFlagCondition cond); + ExprId CompareEqual(size_t size, ExprId a, ExprId b); + ExprId CompareNotEqual(size_t size, ExprId a, ExprId b); + ExprId CompareSignedLessThan(size_t size, ExprId a, ExprId b); + ExprId CompareUnsignedLessThan(size_t size, ExprId a, ExprId b); + ExprId CompareSignedLessEqual(size_t size, ExprId a, ExprId b); + ExprId CompareUnsignedLessEqual(size_t size, ExprId a, ExprId b); + ExprId CompareSignedGreaterEqual(size_t size, ExprId a, ExprId b); + ExprId CompareUnsignedGreaterEqual(size_t size, ExprId a, ExprId b); + ExprId CompareSignedGreaterThan(size_t size, ExprId a, ExprId b); + ExprId CompareUnsignedGreaterThan(size_t size, ExprId a, ExprId b); + ExprId SystemCall(); + ExprId Breakpoint(); + ExprId Trap(uint32_t num); + ExprId Undefined(); + ExprId Unimplemented(); + ExprId UnimplementedMemoryRef(size_t size, ExprId addr); - size_t Goto(BNLowLevelILLabel& label); - size_t If(uint64_t operand, BNLowLevelILLabel& t, BNLowLevelILLabel& f); + ExprId Goto(BNLowLevelILLabel& label); + ExprId If(ExprId operand, BNLowLevelILLabel& t, BNLowLevelILLabel& f); void MarkLabel(BNLowLevelILLabel& label); BNLowLevelILInstruction operator[](size_t i) const; size_t GetIndexForInstruction(size_t i) const; size_t GetInstructionCount() const; - void AddLabelForAddress(Architecture* arch, uint64_t addr); - BNLowLevelILLabel* GetLabelForAddress(Architecture* arch, uint64_t addr); + void AddLabelForAddress(Architecture* arch, ExprId addr); + BNLowLevelILLabel* GetLabelForAddress(Architecture* arch, ExprId addr); void Finalize(); }; diff --git a/lowlevelil.cpp b/lowlevelil.cpp index 97abb8af..e4c65b3a 100644 --- a/lowlevelil.cpp +++ b/lowlevelil.cpp @@ -38,392 +38,392 @@ void LowLevelILFunction::SetCurrentAddress(uint64_t addr) } -size_t LowLevelILFunction::AddExpr(BNLowLevelILOperation operation, size_t size, uint32_t flags, - uint64_t a, uint64_t b, uint64_t c, uint64_t d) +ExprId LowLevelILFunction::AddExpr(BNLowLevelILOperation operation, size_t size, uint32_t flags, + ExprId a, ExprId b, ExprId c, ExprId d) { return BNLowLevelILAddExpr(m_func, operation, size, flags, a, b, c, d); } -size_t LowLevelILFunction::AddInstruction(size_t expr) +ExprId LowLevelILFunction::AddInstruction(size_t expr) { return BNLowLevelILAddInstruction(m_func, expr); } -size_t LowLevelILFunction::Nop() +ExprId LowLevelILFunction::Nop() { return AddExpr(LLIL_NOP, 0, 0); } -size_t LowLevelILFunction::SetRegister(size_t size, uint32_t reg, uint64_t val) +ExprId LowLevelILFunction::SetRegister(size_t size, uint32_t reg, ExprId val) { return AddExpr(LLIL_SET_REG, size, 0, reg, val); } -size_t LowLevelILFunction::SetRegisterSplit(size_t size, uint32_t high, uint32_t low, uint64_t val) +ExprId LowLevelILFunction::SetRegisterSplit(size_t size, uint32_t high, uint32_t low, ExprId val) { return AddExpr(LLIL_SET_REG_SPLIT, size, 0, high, low, val); } -size_t LowLevelILFunction::SetFlag(uint32_t flag, uint64_t val) +ExprId LowLevelILFunction::SetFlag(uint32_t flag, ExprId val) { return AddExpr(LLIL_SET_FLAG, 0, 0, flag, val); } -size_t LowLevelILFunction::Load(size_t size, uint64_t addr) +ExprId LowLevelILFunction::Load(size_t size, ExprId addr) { return AddExpr(LLIL_LOAD, size, 0, addr); } -size_t LowLevelILFunction::Store(size_t size, uint64_t addr, uint64_t val) +ExprId LowLevelILFunction::Store(size_t size, ExprId addr, ExprId val) { return AddExpr(LLIL_STORE, size, 0, addr, val); } -size_t LowLevelILFunction::Push(size_t size, uint64_t val) +ExprId LowLevelILFunction::Push(size_t size, ExprId val) { return AddExpr(LLIL_PUSH, size, 0, val); } -size_t LowLevelILFunction::Pop(size_t size) +ExprId LowLevelILFunction::Pop(size_t size) { return AddExpr(LLIL_POP, size, 0); } -size_t LowLevelILFunction::Register(size_t size, uint32_t reg) +ExprId LowLevelILFunction::Register(size_t size, uint32_t reg) { return AddExpr(LLIL_REG, size, 0, reg); } -size_t LowLevelILFunction::Const(size_t size, uint64_t val) +ExprId LowLevelILFunction::Const(size_t size, uint64_t val) { return AddExpr(LLIL_CONST, size, 0, val); } -size_t LowLevelILFunction::Flag(uint32_t reg) +ExprId LowLevelILFunction::Flag(uint32_t reg) { return AddExpr(LLIL_FLAG, 0, 0, reg); } -size_t LowLevelILFunction::Add(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::Add(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_ADD, size, flags, a, b); } -size_t LowLevelILFunction::AddCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::AddCarry(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_ADC, size, flags, a, b); } -size_t LowLevelILFunction::Sub(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::Sub(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_SUB, size, flags, a, b); } -size_t LowLevelILFunction::SubBorrow(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::SubBorrow(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_SBB, size, flags, a, b); } -size_t LowLevelILFunction::And(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::And(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_AND, size, flags, a, b); } -size_t LowLevelILFunction::Or(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::Or(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_OR, size, flags, a, b); } -size_t LowLevelILFunction::Xor(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::Xor(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_XOR, size, flags, a, b); } -size_t LowLevelILFunction::ShiftLeft(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::ShiftLeft(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_LSL, size, flags, a, b); } -size_t LowLevelILFunction::LogicalShiftRight(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::LogicalShiftRight(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_LSR, size, flags, a, b); } -size_t LowLevelILFunction::ArithShiftRight(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::ArithShiftRight(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_ASR, size, flags, a, b); } -size_t LowLevelILFunction::RotateLeft(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::RotateLeft(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_ROL, size, flags, a, b); } -size_t LowLevelILFunction::RotateLeftCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::RotateLeftCarry(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_RLC, size, flags, a, b); } -size_t LowLevelILFunction::RotateRight(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::RotateRight(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_ROR, size, flags, a, b); } -size_t LowLevelILFunction::RotateRightCarry(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::RotateRightCarry(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_RRC, size, flags, a, b); } -size_t LowLevelILFunction::Mult(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::Mult(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_MUL, size, flags, a, b); } -size_t LowLevelILFunction::MultDoublePrecUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::MultDoublePrecUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_MULU_DP, size, flags, a, b); } -size_t LowLevelILFunction::MultDoublePrecSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::MultDoublePrecSigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_MULS_DP, size, flags, a, b); } -size_t LowLevelILFunction::DivUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::DivUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_DIVU, size, flags, a, b); } -size_t LowLevelILFunction::DivDoublePrecUnsigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags) +ExprId LowLevelILFunction::DivDoublePrecUnsigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags) { return AddExpr(LLIL_DIVU_DP, size, flags, high, low, div); } -size_t LowLevelILFunction::DivSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::DivSigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_DIVS, size, flags, a, b); } -size_t LowLevelILFunction::DivDoublePrecSigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags) +ExprId LowLevelILFunction::DivDoublePrecSigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags) { return AddExpr(LLIL_DIVS_DP, size, flags, high, low, div); } -size_t LowLevelILFunction::ModUnsigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::ModUnsigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_MODU, size, flags, a, b); } -size_t LowLevelILFunction::ModDoublePrecUnsigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags) +ExprId LowLevelILFunction::ModDoublePrecUnsigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags) { return AddExpr(LLIL_MODU_DP, size, flags, high, low, div); } -size_t LowLevelILFunction::ModSigned(size_t size, uint64_t a, uint64_t b, uint32_t flags) +ExprId LowLevelILFunction::ModSigned(size_t size, ExprId a, ExprId b, uint32_t flags) { return AddExpr(LLIL_MODS, size, flags, a, b); } -size_t LowLevelILFunction::ModDoublePrecSigned(size_t size, uint64_t high, uint64_t low, uint64_t div, uint32_t flags) +ExprId LowLevelILFunction::ModDoublePrecSigned(size_t size, ExprId high, ExprId low, ExprId div, uint32_t flags) { return AddExpr(LLIL_MODS_DP, size, flags, high, low, div); } -size_t LowLevelILFunction::Neg(size_t size, uint64_t a, uint32_t flags) +ExprId LowLevelILFunction::Neg(size_t size, ExprId a, uint32_t flags) { return AddExpr(LLIL_NEG, size, flags, a); } -size_t LowLevelILFunction::Not(size_t size, uint64_t a, uint32_t flags) +ExprId LowLevelILFunction::Not(size_t size, ExprId a, uint32_t flags) { return AddExpr(LLIL_NOT, size, flags, a); } -size_t LowLevelILFunction::SignExtend(size_t size, uint64_t a) +ExprId LowLevelILFunction::SignExtend(size_t size, ExprId a) { return AddExpr(LLIL_SX, size, 0, a); } -size_t LowLevelILFunction::ZeroExtend(size_t size, uint64_t a) +ExprId LowLevelILFunction::ZeroExtend(size_t size, ExprId a) { return AddExpr(LLIL_ZX, size, 0, a); } -size_t LowLevelILFunction::Jump(uint64_t dest) +ExprId LowLevelILFunction::Jump(ExprId dest) { return AddExpr(LLIL_JUMP, 0, 0, dest); } -size_t LowLevelILFunction::Call(uint64_t dest) +ExprId LowLevelILFunction::Call(ExprId dest) { return AddExpr(LLIL_CALL, 0, 0, dest); } -size_t LowLevelILFunction::Return(size_t dest) +ExprId LowLevelILFunction::Return(size_t dest) { return AddExpr(LLIL_RET, 0, 0, dest); } -size_t LowLevelILFunction::NoReturn() +ExprId LowLevelILFunction::NoReturn() { return AddExpr(LLIL_NORET, 0, 0); } -size_t LowLevelILFunction::FlagCondition(BNLowLevelILFlagCondition cond) +ExprId LowLevelILFunction::FlagCondition(BNLowLevelILFlagCondition cond) { - return AddExpr(LLIL_FLAG_COND, 0, 0, (uint64_t)cond); + return AddExpr(LLIL_FLAG_COND, 0, 0, (ExprId)cond); } -size_t LowLevelILFunction::CompareEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_E, size, 0, a, b); } -size_t LowLevelILFunction::CompareNotEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareNotEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_NE, size, 0, a, b); } -size_t LowLevelILFunction::CompareSignedLessThan(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareSignedLessThan(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_SLT, size, 0, a, b); } -size_t LowLevelILFunction::CompareUnsignedLessThan(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareUnsignedLessThan(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_ULT, size, 0, a, b); } -size_t LowLevelILFunction::CompareSignedLessEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareSignedLessEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_SLE, size, 0, a, b); } -size_t LowLevelILFunction::CompareUnsignedLessEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareUnsignedLessEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_ULE, size, 0, a, b); } -size_t LowLevelILFunction::CompareSignedGreaterEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareSignedGreaterEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_SGE, size, 0, a, b); } -size_t LowLevelILFunction::CompareUnsignedGreaterEqual(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareUnsignedGreaterEqual(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_UGE, size, 0, a, b); } -size_t LowLevelILFunction::CompareSignedGreaterThan(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareSignedGreaterThan(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_SGT, size, 0, a, b); } -size_t LowLevelILFunction::CompareUnsignedGreaterThan(size_t size, uint64_t a, uint64_t b) +ExprId LowLevelILFunction::CompareUnsignedGreaterThan(size_t size, ExprId a, ExprId b) { return AddExpr(LLIL_CMP_UGT, size, 0, a, b); } -size_t LowLevelILFunction::SystemCall() +ExprId LowLevelILFunction::SystemCall() { return AddExpr(LLIL_SYSCALL, 0, 0); } -size_t LowLevelILFunction::Breakpoint() +ExprId LowLevelILFunction::Breakpoint() { return AddExpr(LLIL_BP, 0, 0); } -size_t LowLevelILFunction::Trap(uint32_t num) +ExprId LowLevelILFunction::Trap(uint32_t num) { return AddExpr(LLIL_TRAP, 0, 0, num); } -size_t LowLevelILFunction::Undefined() +ExprId LowLevelILFunction::Undefined() { return AddExpr(LLIL_UNDEF, 0, 0); } -size_t LowLevelILFunction::Unimplemented() +ExprId LowLevelILFunction::Unimplemented() { return AddExpr(LLIL_UNIMPL, 0, 0); } -size_t LowLevelILFunction::UnimplementedMemoryRef(size_t size, uint64_t addr) +ExprId LowLevelILFunction::UnimplementedMemoryRef(size_t size, ExprId addr) { return AddExpr(LLIL_UNIMPL_MEM, size, 0, addr); } -size_t LowLevelILFunction::Goto(BNLowLevelILLabel& label) +ExprId LowLevelILFunction::Goto(BNLowLevelILLabel& label) { return BNLowLevelILGoto(m_func, &label); } -size_t LowLevelILFunction::If(uint64_t operand, BNLowLevelILLabel& t, BNLowLevelILLabel& f) +ExprId LowLevelILFunction::If(ExprId operand, BNLowLevelILLabel& t, BNLowLevelILLabel& f) { return BNLowLevelILIf(m_func, operand, &t, &f); } @@ -453,13 +453,13 @@ size_t LowLevelILFunction::GetInstructionCount() const } -void LowLevelILFunction::AddLabelForAddress(Architecture* arch, uint64_t addr) +void LowLevelILFunction::AddLabelForAddress(Architecture* arch, ExprId addr) { BNAddLowLevelILLabelForAddress(m_func, arch->GetArchitectureObject(), addr); } -BNLowLevelILLabel* LowLevelILFunction::GetLabelForAddress(Architecture* arch, uint64_t addr) +BNLowLevelILLabel* LowLevelILFunction::GetLabelForAddress(Architecture* arch, ExprId addr) { return BNGetLowLevelILLabelForAddress(m_func, arch->GetArchitectureObject(), addr); } |
