summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2024-03-02 14:38:47 -0500
committerBrian Potchik <brian@vector35.com>2024-03-02 14:38:47 -0500
commit2e3b9c925390cc8b1d72a41d0564bb2862d3dba2 (patch)
treef40495cd494b8c157a0298259019873a624dc7e2 /binaryninjaapi.h
parentff2aa7435c3847f6969364f5d04d0943918429be (diff)
Add support for memory intrinsics.
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index a0178ca8..741f399d 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -7491,6 +7491,7 @@ namespace BinaryNinja {
static uint32_t* GetAllRegisterStacksCallback(void* ctxt, size_t* count);
static void GetRegisterStackInfoCallback(void* ctxt, uint32_t regStack, BNRegisterStackInfo* result);
+ static BNIntrinsicClass GetIntrinsicClassCallback(void* ctxt, uint32_t intrinsic);
static char* GetIntrinsicNameCallback(void* ctxt, uint32_t intrinsic);
static uint32_t* GetAllIntrinsicsCallback(void* ctxt, size_t* count);
static BNNameAndType* GetIntrinsicInputsCallback(void* ctxt, uint32_t intrinsic, size_t* count);
@@ -7774,11 +7775,7 @@ namespace BinaryNinja {
virtual BNRegisterStackInfo GetRegisterStackInfo(uint32_t regStack);
uint32_t GetRegisterStackForRegister(uint32_t reg);
- /*! Gets an intrinsic name from an intrinsic number.
-
- \param intrinsic Intrinsic number
- \return The corresponding intrinsic string
- */
+ virtual BNIntrinsicClass GetIntrinsicClass(uint32_t intrinsic);
virtual std::string GetIntrinsicName(uint32_t intrinsic);
virtual std::vector<uint32_t> GetAllIntrinsics();
virtual std::vector<NameAndType> GetIntrinsicInputs(uint32_t intrinsic);
@@ -8058,6 +8055,7 @@ namespace BinaryNinja {
virtual std::vector<uint32_t> GetAllRegisterStacks() override;
virtual BNRegisterStackInfo GetRegisterStackInfo(uint32_t regStack) override;
+ virtual BNIntrinsicClass GetIntrinsicClass(uint32_t intrinsic) override;
virtual std::string GetIntrinsicName(uint32_t intrinsic) override;
virtual std::vector<uint32_t> GetAllIntrinsics() override;
virtual std::vector<NameAndType> GetIntrinsicInputs(uint32_t intrinsic) override;
@@ -8141,6 +8139,7 @@ namespace BinaryNinja {
virtual std::vector<uint32_t> GetAllRegisterStacks() override;
virtual BNRegisterStackInfo GetRegisterStackInfo(uint32_t regStack) override;
+ virtual BNIntrinsicClass GetIntrinsicClass(uint32_t intrinsic) override;
virtual std::string GetIntrinsicName(uint32_t intrinsic) override;
virtual std::vector<uint32_t> GetAllIntrinsics() override;
virtual std::vector<NameAndType> GetIntrinsicInputs(uint32_t intrinsic) override;
@@ -11999,6 +11998,8 @@ namespace BinaryNinja {
const std::vector<ExprId>& params, uint32_t flags = 0, const ILSourceLocation& loc = ILSourceLocation());
ExprId IntrinsicSSA(const std::vector<SSARegisterOrFlag>& outputs, uint32_t intrinsic,
const std::vector<ExprId>& params, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId MemoryIntrinsicSSA(const std::vector<SSARegisterOrFlag>& outputs, uint32_t intrinsic,
+ const std::vector<ExprId>& params, size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc = ILSourceLocation());
/*! Returns a processor breakpoint expression.
@@ -12649,6 +12650,8 @@ namespace BinaryNinja {
const ILSourceLocation& loc = ILSourceLocation());
ExprId IntrinsicSSA(const std::vector<SSAVariable>& outputs, uint32_t intrinsic,
const std::vector<ExprId>& params, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId MemoryIntrinsicSSA(const std::vector<SSAVariable>& outputs, uint32_t intrinsic,
+ const std::vector<ExprId>& params, size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc = ILSourceLocation());
ExprId FreeVarSlot(const Variable& var, const ILSourceLocation& loc = ILSourceLocation());
ExprId FreeVarSlotSSA(const Variable& var, size_t newVersion, size_t prevVersion,
const ILSourceLocation& loc = ILSourceLocation());