diff options
| author | plafosse <peter@vector35.com> | 2015-08-16 11:33:55 -0400 |
|---|---|---|
| committer | plafosse <peter@vector35.com> | 2015-08-16 11:33:55 -0400 |
| commit | 2d6908f2b7eccb95286b18d7c06168909eeb7f6a (patch) | |
| tree | 2ebe842e8a41913d8e210ba4e7b15aebcc87c014 /binaryninjaapi.h | |
| parent | a401883aa235b222ceed191f455a776b23a3a689 (diff) | |
Typedefing llil identifiers as ExprId
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 138 |
1 files changed, 70 insertions, 68 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(); }; |
