ART: Break up x86 disassembler main function

The function leads to large stack frames with Clang. Break out
some parts and use four char* variables for opcode.

Bug: 18733806
Change-Id: I8bf6da6c763175d7081c4231fa5d3b6809316220
diff --git a/disassembler/disassembler_x86.h b/disassembler/disassembler_x86.h
index f448662..71c3e41 100644
--- a/disassembler/disassembler_x86.h
+++ b/disassembler/disassembler_x86.h
@@ -22,6 +22,8 @@
 namespace art {
 namespace x86 {
 
+enum RegFile { GPR, MMX, SSE };
+
 class DisassemblerX86 FINAL : public Disassembler {
  public:
   DisassemblerX86(DisassemblerOptions* options, bool supports_rex)
@@ -33,6 +35,11 @@
  private:
   size_t DumpInstruction(std::ostream& os, const uint8_t* instr);
 
+  std::string DumpAddress(uint8_t mod, uint8_t rm, uint8_t rex64, uint8_t rex_w, bool no_ops,
+                          bool byte_operand, bool byte_second_operand, uint8_t* prefix, bool load,
+                          RegFile src_reg_file, RegFile dst_reg_file, const uint8_t** instr,
+                          uint32_t* address_bits);
+
   const bool supports_rex_;
 
   DISALLOW_COPY_AND_ASSIGN(DisassemblerX86);