| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //===-- SBInstruction.h -----------------------------------------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLDB_API_SBINSTRUCTION_H
- #define LLDB_API_SBINSTRUCTION_H
- #include "lldb/API/SBData.h"
- #include "lldb/API/SBDefines.h"
- #include <cstdio>
- // There's a lot to be fixed here, but need to wait for underlying insn
- // implementation to be revised & settle down first.
- class InstructionImpl;
- namespace lldb {
- class LLDB_API SBInstruction {
- public:
- SBInstruction();
- SBInstruction(const SBInstruction &rhs);
- const SBInstruction &operator=(const SBInstruction &rhs);
- ~SBInstruction();
- explicit operator bool() const;
- bool IsValid();
- SBAddress GetAddress();
- const char *GetMnemonic(lldb::SBTarget target);
- const char *GetOperands(lldb::SBTarget target);
- const char *GetComment(lldb::SBTarget target);
- lldb::SBData GetData(lldb::SBTarget target);
- size_t GetByteSize();
- bool DoesBranch();
- bool HasDelaySlot();
- bool CanSetBreakpoint();
- void Print(FILE *out);
- void Print(SBFile out);
- void Print(FileSP out);
- bool GetDescription(lldb::SBStream &description);
- bool EmulateWithFrame(lldb::SBFrame &frame, uint32_t evaluate_options);
- bool DumpEmulation(const char *triple); // triple is to specify the
- // architecture, e.g. 'armv6' or
- // 'armv7-apple-ios'
- bool TestEmulation(lldb::SBStream &output_stream, const char *test_file);
- protected:
- friend class SBInstructionList;
- SBInstruction(const lldb::DisassemblerSP &disasm_sp,
- const lldb::InstructionSP &inst_sp);
- void SetOpaque(const lldb::DisassemblerSP &disasm_sp,
- const lldb::InstructionSP &inst_sp);
- lldb::InstructionSP GetOpaque();
- private:
- std::shared_ptr<InstructionImpl> m_opaque_sp;
- };
- } // namespace lldb
- #endif // LLDB_API_SBINSTRUCTION_H
|