diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 19:50:13 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 20:34:34 -0500 |
| commit | e093c21ed880ac3eb72119be15093ee04f8ce299 (patch) | |
| tree | 9f720ebdc0ae415734b1199ed341668c69710a94 /arch/armv7/arch_armv7.h | |
| parent | 0609276712622908254065546102381466033141 (diff) | |
Move architecture modules into the API repo
Diffstat (limited to 'arch/armv7/arch_armv7.h')
| -rw-r--r-- | arch/armv7/arch_armv7.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/armv7/arch_armv7.h b/arch/armv7/arch_armv7.h new file mode 100644 index 00000000..171272f6 --- /dev/null +++ b/arch/armv7/arch_armv7.h @@ -0,0 +1,43 @@ +#pragma once + +#include "binaryninjaapi.h" +#include "armv7.h" + +#define BINARYNINJA_MANUAL_RELOCATION ((uint64_t)-2) + +class ArmCommonArchitecture: public BinaryNinja::Architecture +{ +protected: + BNEndianness m_endian; + BinaryNinja::Ref<BinaryNinja::Architecture> m_armArch, m_thumbArch; + + virtual std::string GetAssemblerTriple() = 0; + +public: + ArmCommonArchitecture(const char* name, BNEndianness endian); + void SetArmAndThumbArchitectures(Architecture* arm, Architecture* thumb); + + virtual size_t GetAddressSize() const override; + virtual BNEndianness GetEndianness() const override; + virtual BinaryNinja::Ref<BinaryNinja::Architecture> GetAssociatedArchitectureByAddress(uint64_t& addr) override; + virtual std::string GetFlagName(uint32_t flag) override; + virtual std::string GetFlagWriteTypeName(uint32_t flags) override; + virtual BNFlagRole GetFlagRole(uint32_t flag, uint32_t semClass = 0) override; + virtual std::vector<uint32_t> GetFlagsWrittenByFlagWriteType(uint32_t flags) override; + virtual std::vector<uint32_t> GetFlagsRequiredForFlagCondition(BNLowLevelILFlagCondition cond, uint32_t semClass) override; + virtual size_t GetFlagWriteLowLevelIL(BNLowLevelILOperation op, size_t size, uint32_t flagWriteType, uint32_t flag, + BNRegisterOrConstant* operands, size_t operandCount, BinaryNinja::LowLevelILFunction& il) override; + virtual std::string GetRegisterName(uint32_t reg) override; + virtual std::vector<uint32_t> GetFullWidthRegisters() override; + virtual std::vector<uint32_t> GetAllRegisters() override; + virtual std::vector<uint32_t> GetAllFlags() override; + virtual std::vector<uint32_t> GetAllFlagWriteTypes() override; + virtual BNRegisterInfo GetRegisterInfo(uint32_t reg) override; + virtual uint32_t GetStackPointerRegister() override; + virtual uint32_t GetLinkRegister() override; + virtual bool CanAssemble() override; + virtual bool Assemble(const std::string& code, uint64_t addr, BinaryNinja::DataBuffer& result, + std::string& errors) override; +}; + +ArmCommonArchitecture* InitThumb2Architecture(const char* name, BNEndianness endian); |
