Added an abstract superclass, MCDisassembler, for
all disassemblers.

Modified the MemoryObject to support 64-bit address
spaces, regardless of the LLVM process's address
width.

Modified the Target class to allow extraction of a
MCDisassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81392 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCDisassembler.cpp b/lib/MC/MCDisassembler.cpp
new file mode 100644
index 0000000..29af019
--- /dev/null
+++ b/lib/MC/MCDisassembler.cpp
@@ -0,0 +1,16 @@
+//===-- lib/MC/MCDisassembler.cpp - Disassembler interface ------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/MC/MCDisassembler.h"
+
+llvm::MCDisassembler::MCDisassembler() {
+}
+  
+llvm::MCDisassembler::~MCDisassembler() {
+}
\ No newline at end of file
diff --git a/lib/Support/MemoryObject.cpp b/lib/Support/MemoryObject.cpp
new file mode 100644
index 0000000..08e5fb7
--- /dev/null
+++ b/lib/Support/MemoryObject.cpp
@@ -0,0 +1,37 @@
+//===- MemoryObject.cpp - Abstract memory interface -------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/MemoryObject.h"
+
+namespace llvm {
+  
+  MemoryObject::~MemoryObject() {
+  }
+  
+  int MemoryObject::readBytes(uint64_t address,
+                              uint64_t size,
+                              uint8_t* buf,
+                              uint64_t* copied) const {
+    uint64_t current = address;
+    uint64_t limit = getBase() + getExtent();
+    
+    while (current - address < size && current < limit) {
+      if (readByte(current, &buf[(current - address)]))
+        return -1;
+      
+      current++;
+    }
+    
+    if (copied)
+      *copied = current - address;
+    
+    return 0;
+  }
+
+}