1#ifndef ROSE_BinaryAnalysis_Architecture_ArmAarch64_H
2#define ROSE_BinaryAnalysis_Architecture_ArmAarch64_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_ASM_AARCH64
5#include <Rose/BinaryAnalysis/Architecture/Base.h>
8namespace BinaryAnalysis {
15class ArmAarch64:
public Base {
26 static Ptr instance();
29 RegisterDictionary::Ptr registerDictionary()
const override;
33 Alignment instructionAlignment()
const override;
38 bool isFunctionCallFast(
const std::vector<SgAsmInstruction*>&, rose_addr_t *target, rose_addr_t *ret)
const override;
39 bool isFunctionReturnFast(
const std::vector<SgAsmInstruction*>&)
const override;
43 Disassembler::BasePtr newInstructionDecoder()
const override;
44 Unparser::BasePtr newUnparser()
const override;
46 virtual InstructionSemantics::BaseSemantics::DispatcherPtr
Range of values delimited by endpoints.
Holds a value or nothing.
Base class for machine instructions.
InstructionSemantics::BaseSemantics::DispatcherPtr newInstructionDispatcher(const std::string &name, const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &)
Create a new instruction dispatcher by name.
std::shared_ptr< ArmAarch64 > ArmAarch64Ptr
Reference counted pointer for ArmAarch64.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
Sawyer::Container::Set< Address > AddressSet
Set of addresses.
const char * Architecture(int64_t)
Convert Rose::BinaryAnalysis::Disassembler::Mips::Decoder::Architecture enum constant to a string.