1 //===- AArch64Disassembler.h - Disassembler for AArch64 ---------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
12 #ifndef LLVM_LIB_TARGET_AARCH64_DISASSEMBLER_AARCH64DISASSEMBLER_H
13 #define LLVM_LIB_TARGET_AARCH64_DISASSEMBLER_AARCH64DISASSEMBLER_H
15 #include "llvm/MC/MCDisassembler/MCDisassembler.h"
16 #include "llvm/MC/MCInstrInfo.h"
20 class AArch64Disassembler
: public MCDisassembler
{
21 std::unique_ptr
<const MCInstrInfo
> const MCII
;
24 AArch64Disassembler(const MCSubtargetInfo
&STI
, MCContext
&Ctx
,
25 MCInstrInfo
const *MCII
)
26 : MCDisassembler(STI
, Ctx
), MCII(MCII
) {}
28 ~AArch64Disassembler() override
= default;
30 MCDisassembler::DecodeStatus
31 getInstruction(MCInst
&Instr
, uint64_t &Size
, ArrayRef
<uint8_t> Bytes
,
32 uint64_t Address
, raw_ostream
&CStream
) const override
;
34 uint64_t suggestBytesToSkip(ArrayRef
<uint8_t> Bytes
,
35 uint64_t Address
) const override
;
38 } // end namespace llvm
40 #endif // LLVM_LIB_TARGET_AARCH64_DISASSEMBLER_AARCH64DISASSEMBLER_H