1 #ifndef ROSE_BinaryAnalysis_DisassemblerAarch64_H
2 #define ROSE_BinaryAnalysis_DisassemblerAarch64_H
3 #include <Rose/BinaryAnalysis/Disassembler.h>
4 #ifdef ROSE_ENABLE_ASM_AARCH64
6 #include <capstone/capstone.h>
9 namespace BinaryAnalysis {
18 class DisassemblerAarch64:
public Disassembler {
43 MODE_MCLASS = CS_MODE_MCLASS,
47 using Modes = BitFlags<Mode>;
56 explicit DisassemblerAarch64(Modes modes = Modes())
57 : modes_(modes), capstoneOpened_(false) {
61 ~DisassemblerAarch64();
65 Disassembler* clone()
const override;
66 Unparser::BasePtr unparser()
const override;
67 SgAsmInstruction* disassembleOne(
const MemoryMap::Ptr&, rose_addr_t startVa, AddressSet *successors=
nullptr)
override;
74 uint32_t opcode(
const cs_insn&);
81 RegisterDescriptor makeRegister(arm64_reg);
84 RegisterDescriptor subRegister(RegisterDescriptor reg,
int idx, arm64_vess elmtSize);
95 SgAsmType* registerType(RegisterDescriptor, arm64_vas);
99 SgAsmType* typeForMemoryRead(
const cs_insn&);
Base class for machine instructions.
Main namespace for the ROSE library.
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.