From 2e3b9c925390cc8b1d72a41d0564bb2862d3dba2 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Sat, 2 Mar 2024 14:38:47 -0500 Subject: Add support for memory intrinsics. --- architecture.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'architecture.cpp') diff --git a/architecture.cpp b/architecture.cpp index 7c9cc9b5..979ba3e2 100644 --- a/architecture.cpp +++ b/architecture.cpp @@ -595,6 +595,13 @@ void Architecture::GetRegisterStackInfoCallback(void* ctxt, uint32_t regStack, B } +BNIntrinsicClass Architecture::GetIntrinsicClassCallback(void* ctxt, uint32_t intrinsic) +{ + CallbackRef arch(ctxt); + return arch->GetIntrinsicClass(intrinsic); +} + + char* Architecture::GetIntrinsicNameCallback(void* ctxt, uint32_t intrinsic) { CallbackRef arch(ctxt); @@ -803,6 +810,7 @@ void Architecture::Register(Architecture* arch) callbacks.getRegisterStackName = GetRegisterStackNameCallback; callbacks.getAllRegisterStacks = GetAllRegisterStacksCallback; callbacks.getRegisterStackInfo = GetRegisterStackInfoCallback; + callbacks.getIntrinsicClass = GetIntrinsicClassCallback; callbacks.getIntrinsicName = GetIntrinsicNameCallback; callbacks.getAllIntrinsics = GetAllIntrinsicsCallback; callbacks.getIntrinsicInputs = GetIntrinsicInputsCallback; @@ -1118,6 +1126,12 @@ uint32_t Architecture::GetRegisterStackForRegister(uint32_t reg) } +BNIntrinsicClass Architecture::GetIntrinsicClass(uint32_t intrinsic) +{ + return GeneralIntrinsicClass; +} + + string Architecture::GetIntrinsicName(uint32_t intrinsic) { return fmt::format("intrinsic_{}", intrinsic); @@ -1756,6 +1770,12 @@ BNRegisterStackInfo CoreArchitecture::GetRegisterStackInfo(uint32_t regStack) } +BNIntrinsicClass CoreArchitecture::GetIntrinsicClass(uint32_t intrinsic) +{ + return BNGetArchitectureIntrinsicClass(m_object, intrinsic); +} + + string CoreArchitecture::GetIntrinsicName(uint32_t intrinsic) { char* name = BNGetArchitectureIntrinsicName(m_object, intrinsic); @@ -2129,6 +2149,12 @@ BNRegisterStackInfo ArchitectureExtension::GetRegisterStackInfo(uint32_t regStac } +BNIntrinsicClass ArchitectureExtension::GetIntrinsicClass(uint32_t intrinsic) +{ + return m_base->GetIntrinsicClass(intrinsic); +} + + string ArchitectureExtension::GetIntrinsicName(uint32_t intrinsic) { return m_base->GetIntrinsicName(intrinsic); -- cgit v1.3.1