1#ifndef ROSE_BinaryAnalysis_Architecture_ArmAarch32_H
2#define ROSE_BinaryAnalysis_Architecture_ArmAarch32_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_ASM_AARCH32
5#include <Rose/BinaryAnalysis/Architecture/Base.h>
8namespace BinaryAnalysis {
46class ArmAarch32:
public Base {
71 explicit ArmAarch32(InstructionSet);
77 static Ptr instance(InstructionSet);
92 RegisterDictionary::Ptr registerDictionary()
const override;
96 Alignment instructionAlignment()
const override;
101 bool isFunctionCallFast(
const std::vector<SgAsmInstruction*>&, rose_addr_t *target, rose_addr_t *ret)
const override;
102 bool isFunctionReturnFast(
const std::vector<SgAsmInstruction*>&)
const override;
106 Disassembler::BasePtr newInstructionDecoder()
const override;
107 Unparser::BasePtr newUnparser()
const override;
109 virtual InstructionSemantics::BaseSemantics::DispatcherPtr
Range of values delimited by endpoints.
Holds a value or nothing.
Base class for machine instructions.
std::shared_ptr< ArmAarch32 > ArmAarch32Ptr
Reference counted pointer for ArmAarch32.
InstructionSemantics::BaseSemantics::DispatcherPtr newInstructionDispatcher(const std::string &name, const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &)
Create a new instruction dispatcher by name.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
Sawyer::Container::Set< Address > AddressSet
Set of addresses.
const char * InstructionSet(int64_t)
Convert Rose::BinaryAnalysis::Architecture::ArmAarch32::InstructionSet enum constant to a string.
const char * Architecture(int64_t)
Convert Rose::BinaryAnalysis::Disassembler::Mips::Decoder::Architecture enum constant to a string.