diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-07-28 01:09:04 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-07-28 01:09:04 -0400 |
| commit | 3fc101f475a763a09d779f119dcbec3185a472a0 (patch) | |
| tree | 8705deb4f6745a7a29571a51df4c19691204c24b /architecture.cpp | |
| parent | 37bc7f679b870b169726e746b75e573db1f3e268 (diff) | |
Initial implementation of type info
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); |
