ROSE 0.11.145.147
ArmAarch64.h
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>
6
7namespace Rose {
8namespace BinaryAnalysis {
9namespace Architecture {
10
15class ArmAarch64: public Base {
16public:
17 using Ptr = ArmAarch64Ptr;
18
19protected:
20 ArmAarch64(); // use `instance` instead
21public:
22 ~ArmAarch64();
23
24public:
26 static Ptr instance();
27
28public:
29 RegisterDictionary::Ptr registerDictionary() const override;
30 bool matchesHeader(SgAsmGenericHeader*) const override;
31
32 Sawyer::Container::Interval<size_t> bytesPerInstruction() const override;
33 Alignment instructionAlignment() const override;
34 std::string instructionMnemonic(const SgAsmInstruction*) const override;
35 std::string instructionDescription(const SgAsmInstruction*) const override;
36 bool isUnknown(const SgAsmInstruction*) const override;
37 bool terminatesBasicBlock(SgAsmInstruction*) 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;
40 Sawyer::Optional<rose_addr_t> branchTarget(SgAsmInstruction*) const override;
41 AddressSet getSuccessors(SgAsmInstruction*, bool &complete) const override;
42
43 Disassembler::BasePtr newInstructionDecoder() const override;
44 Unparser::BasePtr newUnparser() const override;
45
46 virtual InstructionSemantics::BaseSemantics::DispatcherPtr
47 newInstructionDispatcher(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr&) const override;
48};
49
50} // namespace
51} // namespace
52} // namespace
53
54#endif
55#endif
Range of values delimited by endpoints.
Definition Interval.h:31
Holds a value or nothing.
Definition Optional.h:56
Base class for container file headers.
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.
Definition AddressSet.h:13
The ROSE library.
const char * Architecture(int64_t)
Convert Rose::BinaryAnalysis::Disassembler::Mips::Decoder::Architecture enum constant to a string.
const char * Alignment(int64_t)
Convert Rose::FormattedTable::Alignment enum constant to a string.