summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorplafosse <peter@vector35.com>2015-08-16 11:33:55 -0400
committerplafosse <peter@vector35.com>2015-08-16 11:33:55 -0400
commit2d6908f2b7eccb95286b18d7c06168909eeb7f6a (patch)
tree2ebe842e8a41913d8e210ba4e7b15aebcc87c014 /binaryninjaapi.h
parenta401883aa235b222ceed191f455a776b23a3a689 (diff)
Typedefing llil identifiers as ExprId
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h138
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();
};