+++ /dev/null
-#include "InstructionReader.hxx"
-
-InstructionReader::InstructionReader(const Target& target)
- : _logger(log4cxx::Logger::getLogger("disassembler.Target"))
- , _target(target)
-{
- DisAsm.reset(_target.getTarget().createMCDisassembler(_target.getSubTargetInfo()));
- if (!DisAsm) {
- LOG4CXX_ERROR(_logger, "error: no disassembler for target " << _target.getTripleName())
- return;
- }
-}
-
-void InstructionReader::readInstruction(std::string& data, size_t& offset, Instruction& inst) {
- llvm::MCInst instr;
- llvm::StringRefMemoryObject memoryObject(data);
- uint64_t size;
-
- if (DisAsm->getInstruction(instr, size, memoryObject, offset,
- llvm::nulls(), llvm::nulls())) {
-
- } else {
- LOG4CXX_WARN(_logger, "warning: invalid instruction encoding");
- if (size == 0)
- size = 1; // skip illegible bytes
- }
-}