summaryrefslogtreecommitdiff
path: root/architecture.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-04-06 14:29:51 -0700
committerRusty Wagner <rusty@vector35.com>2015-04-06 14:29:51 -0700
commita641c5266ad2a55af2bdd277a2b889ced4eb7235 (patch)
treee30a13162d29641d285951df10030c95e73ebef7 /architecture.cpp
parentd5dc1c2e3169760156ac54c976bbe1ea3d9a8441 (diff)
Implement follow pointer in hex view
Diffstat (limited to 'architecture.cpp')
-rw-r--r--architecture.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/architecture.cpp b/architecture.cpp
index fc5b0466..268fcece 100644
--- a/architecture.cpp
+++ b/architecture.cpp
@@ -42,6 +42,20 @@ Architecture::Architecture(const string& name): m_nameForRegister(name)
}
+BNEndianness Architecture::GetEndiannessCallback(void* ctxt)
+{
+ Architecture* arch = (Architecture*)ctxt;
+ return arch->GetEndianness();
+}
+
+
+size_t Architecture::GetAddressSizeCallback(void* ctxt)
+{
+ Architecture* arch = (Architecture*)ctxt;
+ return arch->GetAddressSize();
+}
+
+
bool Architecture::GetInstructionInfoCallback(void* ctxt, const uint8_t* data, uint64_t addr,
size_t maxLen, BNInstructionInfo* result)
{
@@ -105,6 +119,8 @@ void Architecture::Register(Architecture* arch)
{
BNCustomArchitecture callbacks;
callbacks.context = arch;
+ callbacks.getEndianness = GetEndiannessCallback;
+ callbacks.getAddressSize = GetAddressSizeCallback;
callbacks.getInstructionInfo = GetInstructionInfoCallback;
callbacks.getInstructionText = GetInstructionTextCallback;
callbacks.freeInstructionText = FreeInstructionTextCallback;
@@ -151,6 +167,18 @@ CoreArchitecture::CoreArchitecture(BNArchitecture* arch): Architecture(arch)
}
+BNEndianness CoreArchitecture::GetEndianness() const
+{
+ return BNGetArchitectureEndianness(m_arch);
+}
+
+
+size_t CoreArchitecture::GetAddressSize() const
+{
+ return BNGetArchitectureAddressSize(m_arch);
+}
+
+
bool CoreArchitecture::GetInstructionInfo(const uint8_t* data, uint64_t addr, size_t maxLen, InstructionInfo& result)
{
return BNGetInstructionInfo(m_arch, data, addr, maxLen, &result);