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 21 namespace lldb { 22 23 class SBInstruction 24 { 25 public: 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 78 protected: 79 friend class SBInstructionList; 80 81 SBInstruction (const lldb::InstructionSP &inst_sp); 82 83 void 84 SetOpaque (const lldb::InstructionSP &inst_sp); 85 86 private: 87 88 lldb::InstructionSP m_opaque_sp; 89 }; 90 91 92 } // namespace lldb 93 94 #endif // LLDB_SBInstruction_h_ 95