diff options
Diffstat (limited to 'architecture.cpp')
| -rw-r--r-- | architecture.cpp | 22 |
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); |
