1//===-- SBInstruction.h -----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLDB_SBInstruction_h_ 11#define LLDB_SBInstruction_h_ 12 13#include "lldb/API/SBDefines.h" 14#include "lldb/API/SBData.h" 15 16#include <stdio.h> 17 18// There's a lot to be fixed here, but need to wait for underlying insn implementation 19// to be revised & settle down first. 20 21namespace lldb { 22 23class SBInstruction 24{ 25public: 26 27 SBInstruction (); 28 29 SBInstruction (const SBInstruction &rhs); 30 31 const SBInstruction & 32 operator = (const SBInstruction &rhs); 33 34 ~SBInstruction (); 35 36 bool 37 IsValid(); 38 39 SBAddress 40 GetAddress(); 41 42 lldb::AddressClass 43 GetAddressClass (); 44 45 const char * 46 GetMnemonic (lldb::SBTarget target); 47 48 const char * 49 GetOperands (lldb::SBTarget target); 50 51 const char * 52 GetComment (lldb::SBTarget target); 53 54 lldb::SBData 55 GetData (lldb::SBTarget target); 56 57 size_t 58 GetByteSize (); 59 60 bool 61 DoesBranch (); 62 63 void 64 Print (FILE *out); 65 66 bool 67 GetDescription (lldb::SBStream &description); 68 69 bool 70 EmulateWithFrame (lldb::SBFrame &frame, uint32_t evaluate_options); 71 72 bool 73 DumpEmulation (const char * triple); // triple is to specify the architecture, e.g. 'armv6' or 'armv7-apple-ios' 74 75 bool 76 TestEmulation (lldb::SBStream &output_stream, const char *test_file); 77 78protected: 79 friend class SBInstructionList; 80 81 SBInstruction (const lldb::InstructionSP &inst_sp); 82 83 void 84 SetOpaque (const lldb::InstructionSP &inst_sp); 85 86private: 87 88 lldb::InstructionSP m_opaque_sp; 89}; 90 91 92} // namespace lldb 93 94#endif // LLDB_SBInstruction_h_ 95