1#ifndef ROSE_BinaryAnalysis_Disassembler_Base_H 
    2#define ROSE_BinaryAnalysis_Disassembler_Base_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_BINARY_ANALYSIS 
    6#include <Rose/BinaryAnalysis/Architecture/BasicTypes.h> 
    7#include <Rose/BinaryAnalysis/Disassembler/BasicTypes.h> 
    8#include <Rose/BinaryAnalysis/Disassembler/Exception.h> 
    9#include <Rose/BinaryAnalysis/InstructionMap.h> 
   10#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics.h> 
   11#include <Rose/BinaryAnalysis/MemoryMap.h> 
   12#include <Rose/BinaryAnalysis/Unparser/Settings.h> 
   13#include <Rose/Diagnostics.h> 
   15#include "integerOps.h" 
   18#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
   19#include <boost/serialization/access.hpp> 
   20#include <boost/serialization/string.hpp> 
   21#include <boost/serialization/version.hpp> 
   30namespace BinaryAnalysis {
 
   31namespace Disassembler {
 
   73#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
   75    friend class boost::serialization::access;
 
   78    void serialize(S &s, 
const unsigned version) {
 
   79        s & BOOST_SERIALIZATION_NVP(REG_IP);
 
   80        s & BOOST_SERIALIZATION_NVP(REG_SS);
 
   82            s & BOOST_SERIALIZATION_NVP(REG_SF);
 
  116    virtual const std::string& 
name() 
const;
 
  194    size_t wordSizeBytes() const ROSE_DEPRECATED("use 
bytesPerWord()");
 
 
  208#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
Virtual base class for instruction disassemblers.
 
size_t instructionAlignment() const
Property: Instruction alignment requirement.
 
virtual SgAsmInstruction * makeUnknownInstruction(const Exception &)=0
Makes an unknown instruction from an exception.
 
virtual SgAsmInstruction * disassembleOne(const MemoryMap::Ptr &map, Address start_va, AddressSet *successors=NULL)=0
This is the lowest level disassembly function and is implemented in the architecture-specific subclas...
 
virtual const std::string & name() const
Property: Name.
 
SgAsmInstruction * disassembleOne(const unsigned char *buf, Address buf_va, size_t buf_size, Address start_va, AddressSet *successors=NULL)
Similar in functionality to the disassembleOne method that takes a MemoryMap argument,...
 
Unparser::BasePtr unparser() const
Unparser.
 
size_t instructionAlignment_
Positive alignment constraint for instruction addresses.
 
virtual Ptr clone() const =0
Creates a new copy of a disassembler.
 
virtual size_t bytesPerWord() const
Property: Bytes per word for the architecture.
 
static SgAsmInstruction * find_instruction_containing(const InstructionMap &insns, Address va)
Finds the highest-address instruction that contains the byte at the specified virtual address.
 
Architecture::BaseConstPtr architecture() const
Property: Architecture.
 
RegisterDescriptor REG_LINK
Register descriptors initialized during construction.
 
void mark_referenced_instructions(SgAsmInterpretation *, const MemoryMap::Ptr &, const InstructionMap &)
Marks parts of the file that correspond to instructions as having been referenced.
 
virtual ByteOrder::Endianness byteOrder() const
Property: Byte order of memory.
 
AddressSet get_block_successors(const InstructionMap &, bool &complete)
Calculates the successor addresses of a basic block and adds them to a successors set.
 
Exception thrown by the disassemblers.
 
Describes (part of) a physical CPU register.
 
Base class for reference counted objects.
 
Base class for machine instructions.
 
Represents an interpretation of a binary container.
 
std::shared_ptr< const Base > BaseConstPtr
Reference counted pointer for Architecture::Base.
 
std::uint64_t Address
Address.