summaryrefslogtreecommitdiff
path: root/architecture.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-07-28 01:09:04 -0400
committerRusty Wagner <rusty@vector35.com>2015-07-28 01:09:04 -0400
commit3fc101f475a763a09d779f119dcbec3185a472a0 (patch)
tree8705deb4f6745a7a29571a51df4c19691204c24b /architecture.cpp
parent37bc7f679b870b169726e746b75e573db1f3e268 (diff)
Initial implementation of type info
Diffstat (limited to 'architecture.cpp')
-rw-r--r--architecture.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/architecture.cpp b/architecture.cpp
index 6c7e0e4c..a3ec56b7 100644
--- a/architecture.cpp
+++ b/architecture.cpp
@@ -60,6 +60,13 @@ size_t Architecture::GetAddressSizeCallback(void* ctxt)
}
+size_t Architecture::GetDefaultIntegerSizeCallback(void* ctxt)
+{
+ Architecture* arch = (Architecture*)ctxt;
+ return arch->GetDefaultIntegerSize();
+}
+
+
bool Architecture::GetInstructionInfoCallback(void* ctxt, const uint8_t* data, uint64_t addr,
size_t maxLen, BNInstructionInfo* result)
{
@@ -267,6 +274,7 @@ void Architecture::Register(Architecture* arch)
callbacks.context = arch;
callbacks.getEndianness = GetEndiannessCallback;
callbacks.getAddressSize = GetAddressSizeCallback;
+ callbacks.getDefaultIntegerSize = GetDefaultIntegerSizeCallback;
callbacks.getInstructionInfo = GetInstructionInfoCallback;
callbacks.getInstructionText = GetInstructionTextCallback;
callbacks.freeInstructionText = FreeInstructionTextCallback;
@@ -326,6 +334,14 @@ string Architecture::GetName() const
}
+size_t Architecture::GetDefaultIntegerSize() const
+{
+ if (GetAddressSize() < 4)
+ return GetAddressSize();
+ return 4;
+}
+
+
bool Architecture::GetInstructionLowLevelIL(const uint8_t*, uint64_t, size_t&, LowLevelILFunction& il)
{
il.AddInstruction(il.Unimplemented());
@@ -478,6 +494,12 @@ size_t CoreArchitecture::GetAddressSize() const
}
+size_t CoreArchitecture::GetDefaultIntegerSize() const
+{
+ return BNGetArchitectureDefaultIntegerSize(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);