diff options
author | Sean Callanan <scallanan@apple.com> | 2009-09-09 22:49:13 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2009-09-09 22:49:13 +0000 |
commit | 251ef612a812ac99edeab6c08a752bf8ca220921 (patch) | |
tree | 8ae01f418b733eccd6557bef5d58131981e5cb2f /lib/Support/MemoryObject.cpp | |
parent | 0734d35044c304dd072f20e49840bcbea427db9c (diff) | |
download | external_llvm-251ef612a812ac99edeab6c08a752bf8ca220921.zip external_llvm-251ef612a812ac99edeab6c08a752bf8ca220921.tar.gz external_llvm-251ef612a812ac99edeab6c08a752bf8ca220921.tar.bz2 |
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
Diffstat (limited to 'lib/Support/MemoryObject.cpp')
-rw-r--r-- | lib/Support/MemoryObject.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
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; + } + +} |