1 //===-- Baton.cpp -----------------------------------------------*- 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 #include "lldb/Core/Opcode.h" 11 12 // C Includes 13 // C++ Includes 14 // Other libraries and framework includes 15 // Project includes 16 #include "lldb/Core/Stream.h" 17 18 using namespace lldb; 19 using namespace lldb_private; 20 21 22 int 23 Opcode::Dump (Stream *s, uint32_t min_byte_width) 24 { 25 int bytes_written = 0; 26 switch (m_type) 27 { 28 case Opcode::eTypeInvalid: 29 bytes_written = s->PutCString ("<invalid>"); 30 break; 31 case Opcode::eType8: 32 bytes_written = s->Printf ("0x%2.2x", m_data.inst8); 33 break; 34 case Opcode::eType16: 35 bytes_written = s->Printf ("0x%4.4x", m_data.inst16); 36 break; 37 38 case Opcode::eType32: 39 bytes_written = s->Printf ("0x%8.8x", m_data.inst32); 40 break; 41 42 case Opcode::eType64: 43 bytes_written = s->Printf ("0x%16.16llx", m_data.inst64); 44 break; 45 46 case Opcode::eTypeBytes: 47 { 48 for (uint32_t i=0; i<m_data.inst.length; ++i) 49 { 50 if (i > 0) 51 s->PutChar (' '); 52 bytes_written += s->Printf ("%2.2x", m_data.inst.bytes[i]); 53 } 54 } 55 break; 56 } 57 58 // Add spaces to make sure bytes dispay comes out even in case opcodes 59 // aren't all the same size 60 if (bytes_written < min_byte_width) 61 bytes_written = s->Printf ("%*s", min_byte_width - bytes_written, ""); 62 return bytes_written; 63 } 64 65