1 #ifndef ROSE_BinaryAnalysis_Disassembler_Aarch64_H
2 #define ROSE_BinaryAnalysis_Disassembler_Aarch64_H
3 #include <Rose/BinaryAnalysis/Disassembler/Base.h>
4 #ifdef ROSE_ENABLE_ASM_AARCH64
6 #include <capstone/capstone.h>
9 namespace BinaryAnalysis {
10 namespace Disassembler {
19 class Aarch64:
public Base {
47 MODE_MCLASS = CS_MODE_MCLASS,
51 using Modes = BitFlags<Mode>;
56 bool capstoneOpened_ =
false;
60 explicit Aarch64(Modes);
64 static Ptr instance(Modes modes = Modes());
70 Base::Ptr clone()
const override;
71 Unparser::BasePtr unparser()
const override;
79 uint32_t opcode(
const cs_insn&);
86 RegisterDescriptor makeRegister(arm64_reg);
89 RegisterDescriptor subRegister(RegisterDescriptor reg,
int idx, arm64_vess elmtSize);
100 SgAsmType* registerType(RegisterDescriptor, arm64_vas);
104 SgAsmType* typeForMemoryRead(
const cs_insn&);
Base class for machine instructions.
Main namespace for the ROSE library.
Sawyer::SharedPointer< Aarch64 > Aarch64Ptr
Reference counted pointer for ARM Aarch64 decoder.
MemoryMapPtr Ptr
Reference counting pointer.
List of operands for an instruction.
const char * Mode(int64_t)
Convert Rose::AST::cmdline::graphviz_t::Mode enum constant to a string.
Base class for expressions.
Base class for binary types.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.