From 251ef612a812ac99edeab6c08a752bf8ca220921 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Wed, 9 Sep 2009 22:49:13 +0000 Subject: 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 --- lib/Support/MemoryObject.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/Support/MemoryObject.cpp (limited to 'lib/Support/MemoryObject.cpp') 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; + } + +} -- cgit v1.1