summaryrefslogtreecommitdiff
path: root/source/Core/Opcode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Core/Opcode.cpp')
-rw-r--r--source/Core/Opcode.cpp225
1 files changed, 104 insertions, 121 deletions
diff --git a/source/Core/Opcode.cpp b/source/Core/Opcode.cpp
index e36727eaa313..11b913841ecb 100644
--- a/source/Core/Opcode.cpp
+++ b/source/Core/Opcode.cpp
@@ -24,136 +24,119 @@
using namespace lldb;
using namespace lldb_private;
-int
-Opcode::Dump (Stream *s, uint32_t min_byte_width)
-{
- int bytes_written = 0;
- switch (m_type)
- {
- case Opcode::eTypeInvalid:
- bytes_written = s->PutCString ("<invalid>");
- break;
- case Opcode::eType8:
- bytes_written = s->Printf ("0x%2.2x", m_data.inst8);
- break;
- case Opcode::eType16:
- bytes_written = s->Printf ("0x%4.4x", m_data.inst16);
- break;
- case Opcode::eType16_2:
- case Opcode::eType32:
- bytes_written = s->Printf ("0x%8.8x", m_data.inst32);
- break;
+int Opcode::Dump(Stream *s, uint32_t min_byte_width) {
+ int bytes_written = 0;
+ switch (m_type) {
+ case Opcode::eTypeInvalid:
+ bytes_written = s->PutCString("<invalid>");
+ break;
+ case Opcode::eType8:
+ bytes_written = s->Printf("0x%2.2x", m_data.inst8);
+ break;
+ case Opcode::eType16:
+ bytes_written = s->Printf("0x%4.4x", m_data.inst16);
+ break;
+ case Opcode::eType16_2:
+ case Opcode::eType32:
+ bytes_written = s->Printf("0x%8.8x", m_data.inst32);
+ break;
- case Opcode::eType64:
- bytes_written = s->Printf ("0x%16.16" PRIx64, m_data.inst64);
- break;
+ case Opcode::eType64:
+ bytes_written = s->Printf("0x%16.16" PRIx64, m_data.inst64);
+ break;
- case Opcode::eTypeBytes:
- for (uint32_t i = 0; i < m_data.inst.length; ++i)
- {
- if (i > 0)
- bytes_written += s->PutChar (' ');
- bytes_written += s->Printf ("%2.2x", m_data.inst.bytes[i]);
- }
- break;
+ case Opcode::eTypeBytes:
+ for (uint32_t i = 0; i < m_data.inst.length; ++i) {
+ if (i > 0)
+ bytes_written += s->PutChar(' ');
+ bytes_written += s->Printf("%2.2x", m_data.inst.bytes[i]);
}
+ break;
+ }
- // Add spaces to make sure bytes dispay comes out even in case opcodes
- // aren't all the same size
- if (static_cast<uint32_t>(bytes_written) < min_byte_width)
- bytes_written = s->Printf ("%*s", min_byte_width - bytes_written, "");
- return bytes_written;
+ // Add spaces to make sure bytes dispay comes out even in case opcodes
+ // aren't all the same size
+ if (static_cast<uint32_t>(bytes_written) < min_byte_width)
+ bytes_written = s->Printf("%*s", min_byte_width - bytes_written, "");
+ return bytes_written;
}
-lldb::ByteOrder
-Opcode::GetDataByteOrder () const
-{
- if (m_byte_order != eByteOrderInvalid)
- {
- return m_byte_order;
- }
- switch (m_type)
- {
- case Opcode::eTypeInvalid: break;
- case Opcode::eType8:
- case Opcode::eType16:
- case Opcode::eType16_2:
- case Opcode::eType32:
- case Opcode::eType64: return endian::InlHostByteOrder();
- case Opcode::eTypeBytes:
- break;
- }
- return eByteOrderInvalid;
+lldb::ByteOrder Opcode::GetDataByteOrder() const {
+ if (m_byte_order != eByteOrderInvalid) {
+ return m_byte_order;
+ }
+ switch (m_type) {
+ case Opcode::eTypeInvalid:
+ break;
+ case Opcode::eType8:
+ case Opcode::eType16:
+ case Opcode::eType16_2:
+ case Opcode::eType32:
+ case Opcode::eType64:
+ return endian::InlHostByteOrder();
+ case Opcode::eTypeBytes:
+ break;
+ }
+ return eByteOrderInvalid;
}
-uint32_t
-Opcode::GetData (DataExtractor &data) const
-{
- uint32_t byte_size = GetByteSize ();
- uint8_t swap_buf[8];
- const void *buf = nullptr;
+uint32_t Opcode::GetData(DataExtractor &data) const {
+ uint32_t byte_size = GetByteSize();
+ uint8_t swap_buf[8];
+ const void *buf = nullptr;
- if (byte_size > 0)
- {
- if (!GetEndianSwap())
- {
- if (m_type == Opcode::eType16_2)
- {
- // 32 bit thumb instruction, we need to sizzle this a bit
- swap_buf[0] = m_data.inst.bytes[2];
- swap_buf[1] = m_data.inst.bytes[3];
- swap_buf[2] = m_data.inst.bytes[0];
- swap_buf[3] = m_data.inst.bytes[1];
- buf = swap_buf;
- }
- else
- {
- buf = GetOpcodeDataBytes();
- }
- }
- else
- {
- switch (m_type)
- {
- case Opcode::eTypeInvalid:
- break;
- case Opcode::eType8:
- buf = GetOpcodeDataBytes();
- break;
- case Opcode::eType16:
- *(uint16_t *)swap_buf = llvm::ByteSwap_16(m_data.inst16);
- buf = swap_buf;
- break;
- case Opcode::eType16_2:
- swap_buf[0] = m_data.inst.bytes[1];
- swap_buf[1] = m_data.inst.bytes[0];
- swap_buf[2] = m_data.inst.bytes[3];
- swap_buf[3] = m_data.inst.bytes[2];
- buf = swap_buf;
- break;
- case Opcode::eType32:
- *(uint32_t *)swap_buf = llvm::ByteSwap_32(m_data.inst32);
- buf = swap_buf;
- break;
- case Opcode::eType64:
- *(uint32_t *)swap_buf = llvm::ByteSwap_64(m_data.inst64);
- buf = swap_buf;
- break;
- case Opcode::eTypeBytes:
- buf = GetOpcodeDataBytes();
- break;
- }
- }
+ if (byte_size > 0) {
+ if (!GetEndianSwap()) {
+ if (m_type == Opcode::eType16_2) {
+ // 32 bit thumb instruction, we need to sizzle this a bit
+ swap_buf[0] = m_data.inst.bytes[2];
+ swap_buf[1] = m_data.inst.bytes[3];
+ swap_buf[2] = m_data.inst.bytes[0];
+ swap_buf[3] = m_data.inst.bytes[1];
+ buf = swap_buf;
+ } else {
+ buf = GetOpcodeDataBytes();
+ }
+ } else {
+ switch (m_type) {
+ case Opcode::eTypeInvalid:
+ break;
+ case Opcode::eType8:
+ buf = GetOpcodeDataBytes();
+ break;
+ case Opcode::eType16:
+ *(uint16_t *)swap_buf = llvm::ByteSwap_16(m_data.inst16);
+ buf = swap_buf;
+ break;
+ case Opcode::eType16_2:
+ swap_buf[0] = m_data.inst.bytes[1];
+ swap_buf[1] = m_data.inst.bytes[0];
+ swap_buf[2] = m_data.inst.bytes[3];
+ swap_buf[3] = m_data.inst.bytes[2];
+ buf = swap_buf;
+ break;
+ case Opcode::eType32:
+ *(uint32_t *)swap_buf = llvm::ByteSwap_32(m_data.inst32);
+ buf = swap_buf;
+ break;
+ case Opcode::eType64:
+ *(uint32_t *)swap_buf = llvm::ByteSwap_64(m_data.inst64);
+ buf = swap_buf;
+ break;
+ case Opcode::eTypeBytes:
+ buf = GetOpcodeDataBytes();
+ break;
+ }
}
- if (buf != nullptr)
- {
- DataBufferSP buffer_sp;
+ }
+ if (buf != nullptr) {
+ DataBufferSP buffer_sp;
- buffer_sp.reset (new DataBufferHeap (buf, byte_size));
- data.SetByteOrder(GetDataByteOrder());
- data.SetData (buffer_sp);
- return byte_size;
- }
- data.Clear();
- return 0;
+ buffer_sp.reset(new DataBufferHeap(buf, byte_size));
+ data.SetByteOrder(GetDataByteOrder());
+ data.SetData(buffer_sp);
+ return byte_size;
+ }
+ data.Clear();
+ return 0;
}