From 3fc101f475a763a09d779f119dcbec3185a472a0 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 28 Jul 2015 01:09:04 -0400 Subject: Initial implementation of type info --- architecture.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'architecture.cpp') 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); -- cgit v1.3.1