summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-09-03 01:20:10 -0400
committerRusty Wagner <rusty@vector35.com>2015-09-03 01:20:10 -0400
commitfd5865d110b484e7841713a679024c78ca4105c9 (patch)
treedc1d2acfbe8b2044d02391e4fa68087d107ba7e0 /binaryninjaapi.h
parent183385ae0c88ad5d8c070560bad4bd937129fb45 (diff)
Implement low level IL from Python
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 5ede4758..abf4cf2a 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -860,6 +860,8 @@ namespace BinaryNinja
static char* GetFlagWriteTypeNameCallback(void* ctxt, uint32_t flags);
static uint32_t* GetFullWidthRegistersCallback(void* ctxt, size_t* count);
static uint32_t* GetAllRegistersCallback(void* ctxt, size_t* count);
+ static uint32_t* GetAllFlagsCallback(void* ctxt, size_t* count);
+ static uint32_t* GetAllFlagWriteTypesCallback(void* ctxt, size_t* count);
static void FreeRegisterListCallback(void* ctxt, uint32_t* regs);
static void GetRegisterInfoCallback(void* ctxt, uint32_t reg, BNRegisterInfo* result);
static uint32_t GetStackPointerRegisterCallback(void* ctxt);
@@ -902,6 +904,8 @@ namespace BinaryNinja
virtual std::string GetFlagWriteTypeName(uint32_t flags);
virtual std::vector<uint32_t> GetFullWidthRegisters();
virtual std::vector<uint32_t> GetAllRegisters();
+ virtual std::vector<uint32_t> GetAllFlags();
+ virtual std::vector<uint32_t> GetAllFlagWriteTypes();
virtual BNRegisterInfo GetRegisterInfo(uint32_t reg);
virtual uint32_t GetStackPointerRegister();
std::vector<uint32_t> GetModifiedRegistersOnWrite(uint32_t reg);
@@ -944,6 +948,8 @@ namespace BinaryNinja
virtual std::string GetFlagWriteTypeName(uint32_t flags) override;
virtual std::vector<uint32_t> GetFullWidthRegisters() override;
virtual std::vector<uint32_t> GetAllRegisters() override;
+ virtual std::vector<uint32_t> GetAllFlags() override;
+ virtual std::vector<uint32_t> GetAllFlagWriteTypes() override;
virtual BNRegisterInfo GetRegisterInfo(uint32_t reg) override;
virtual uint32_t GetStackPointerRegister() override;
@@ -1246,6 +1252,7 @@ namespace BinaryNinja
ExprId Register(size_t size, uint32_t reg);
ExprId Const(size_t size, uint64_t val);
ExprId Flag(uint32_t reg);
+ ExprId FlagBit(size_t size, uint32_t flag, uint32_t bitIndex);
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);
@@ -1290,6 +1297,7 @@ namespace BinaryNinja
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 TestBit(size_t size, ExprId a, ExprId b);
ExprId SystemCall();
ExprId Breakpoint();
ExprId Trap(uint32_t num);
@@ -1309,6 +1317,9 @@ namespace BinaryNinja
BNLowLevelILLabel* GetLabelForAddress(Architecture* arch, ExprId addr);
void Finalize();
+
+ bool GetExprText(Architecture* arch, ExprId expr, std::vector<InstructionTextToken>& tokens);
+ bool GetInstructionText(Architecture* arch, size_t i, std::vector<InstructionTextToken>& tokens);
};
class FunctionRecognizer