1#ifndef ROSE_BinaryAnalysis_Disassembler_Aarch64_H 
    2#define ROSE_BinaryAnalysis_Disassembler_Aarch64_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_ASM_AARCH64 
    5#include <Rose/BinaryAnalysis/Disassembler/Base.h> 
    7#include <capstone/capstone.h> 
   10namespace BinaryAnalysis {
 
   11namespace Disassembler {
 
   20class Aarch64: 
public Base {
 
   44    using Ptr = Aarch64Ptr;
 
   48        MODE_MCLASS = CS_MODE_MCLASS,                   
 
   52    using Modes = BitFlags<Mode>;
 
   57    bool capstoneOpened_ = 
false;                       
 
   61    Aarch64(
const Architecture::BaseConstPtr&, Modes);
 
   65    static Ptr instance(
const Architecture::BaseConstPtr&, Modes modes = Modes());
 
   70    Base::Ptr clone() 
const override;
 
   71    SgAsmInstruction* disassembleOne(
const MemoryMap::Ptr&, Address startVa, AddressSet *successors=
nullptr) 
override;
 
   78    uint32_t opcode(
const cs_insn&);
 
   85    RegisterDescriptor makeRegister(arm64_reg);
 
   88    RegisterDescriptor subRegister(RegisterDescriptor reg, 
int idx, arm64_vess elmtSize);
 
   99    SgAsmType* registerType(RegisterDescriptor, arm64_vas);
 
  103    SgAsmType* typeForMemoryRead(
const cs_insn&);
 
Base class for expressions.
 
Base class for machine instructions.
 
List of operands for an instruction.
 
Base class for binary types.
 
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
 
const char * Mode(int64_t)
Convert Rose::BinaryAnalysis::Disassembler::Aarch32::Mode enum constant to a string.