| //===- ARM64Disassembler.h - Disassembler for ARM64 -------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef ARM64DISASSEMBLER_H |
| #define ARM64DISASSEMBLER_H |
| |
| #include "llvm/MC/MCDisassembler.h" |
| |
| namespace llvm { |
| |
| class MCInst; |
| class MemoryObject; |
| class raw_ostream; |
| |
| class ARM64Disassembler : public MCDisassembler { |
| public: |
| ARM64Disassembler(const MCSubtargetInfo &STI) : MCDisassembler(STI) {} |
| |
| ~ARM64Disassembler() {} |
| |
| /// getInstruction - See MCDisassembler. |
| MCDisassembler::DecodeStatus getInstruction(MCInst &instr, uint64_t &size, |
| const MemoryObject ®ion, |
| uint64_t address, |
| raw_ostream &vStream, |
| raw_ostream &cStream) const; |
| |
| /// tryAddingSymbolicOperand - tryAddingSymbolicOperand trys to add a symbolic |
| /// operand in place of the immediate Value in the MCInst. The immediate |
| /// Value has not had any PC adjustment made by the caller. If the instruction |
| /// adds the PC to the immediate Value then InstsAddsAddressToValue is true, |
| /// else false. If the getOpInfo() function was set as part of the |
| /// setupForSymbolicDisassembly() call then that function is called to get any |
| /// symbolic information at the Address for this instrution. If that returns |
| /// non-zero then the symbolic information it returns is used to create an |
| /// MCExpr and that is added as an operand to the MCInst. This function |
| /// returns true if it adds an operand to the MCInst and false otherwise. |
| bool tryAddingSymbolicOperand(uint64_t Address, int Value, |
| bool InstsAddsAddressToValue, uint64_t InstSize, |
| MCInst &MI, uint32_t insn = 0) const; |
| }; |
| |
| } // namespace llvm |
| |
| #endif |