1#ifndef ROSE_BinaryAnalysis_CallingConvention_Analysis_H 
    2#define ROSE_BinaryAnalysis_CallingConvention_Analysis_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_BINARY_ANALYSIS 
    5#include <Rose/BinaryAnalysis/CallingConvention/BasicTypes.h> 
    7#include <Rose/BinaryAnalysis/RegisterParts.h> 
    8#include <Rose/BinaryAnalysis/Variables.h> 
   10#include <Sawyer/Optional.h> 
   13namespace BinaryAnalysis {
 
   14namespace CallingConvention {
 
   35#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
   37    friend class boost::serialization::access;
 
   40    void serialize(S &s, 
const unsigned ) {
 
   41        s & BOOST_SERIALIZATION_NVP(cpu_);
 
   42        s & BOOST_SERIALIZATION_NVP(regDict_);
 
   43        s & BOOST_SERIALIZATION_NVP(defaultCc_);
 
   44        s & BOOST_SERIALIZATION_NVP(hasResults_);
 
   45        s & BOOST_SERIALIZATION_NVP(didConverge_);
 
   46        s & BOOST_SERIALIZATION_NVP(restoredRegisters_);
 
   47        s & BOOST_SERIALIZATION_NVP(inputRegisters_);
 
   48        s & BOOST_SERIALIZATION_NVP(outputRegisters_);
 
   49        s & BOOST_SERIALIZATION_NVP(inputStackParameters_);
 
   50        s & BOOST_SERIALIZATION_NVP(outputStackParameters_);
 
   51        s & BOOST_SERIALIZATION_NVP(stackDelta_);
 
  180    void print(std::ostream&, 
bool multiLine=
false) 
const;
 
 
Function calling convention.
 
const RegisterParts & inputRegisters() const
Input registers.
 
const Variables::StackVariables & inputStackParameters() const
Input stack parameters.
 
Analysis()
Default constructor.
 
void print(std::ostream &, bool multiLine=false) const
Print information about the analysis results.
 
const RegisterParts & calleeSavedRegisters() const
Callee-saved registers.
 
void defaultCallingConvention(const DefinitionPtr &)
Property: Default calling convention.
 
bool match(const DefinitionPtr &) const
Determine whether a definition matches.
 
void registerDictionary(const RegisterDictionaryPtr &d)
Property: Register dictionary.
 
Sawyer::Optional< int64_t > stackDelta() const
Concrete stack delta.
 
void analyzeFunction(const Partitioner2::PartitionerConstPtr &, const Sawyer::SharedPointer< Partitioner2::Function > &)
Analyze one function.
 
const RegisterParts & outputRegisters() const
Output registers.
 
void clearResults()
Clear analysis results.
 
bool didConverge() const
Whether the analysis results are valid.
 
DefinitionPtr defaultCallingConvention() const
Property: Default calling convention.
 
void clearNonResults()
Clears everything but results.
 
Dictionary match(const Dictionary &) const
Find matching calling convention definitions.
 
bool hasResults() const
Whether a function has been analyzed.
 
Analysis(const InstructionSemantics::BaseSemantics::DispatcherPtr &)
Construct an analysis using a specified dispatcher.
 
Analysis(const Disassembler::BasePtr &)
Construct an analyzer using a specified disassembler.
 
RegisterDictionaryPtr registerDictionary() const
Property: Register dictionary.
 
const Variables::StackVariables & outputStackParameters() const
Output stack parameters.
 
Holds a set of registers without regard for register boundaries.
 
Holds a value or nothing.
 
std::vector< DefinitionPtr > Dictionary
An ordered collection of calling convention definitions.
 
boost::shared_ptr< Dispatcher > DispatcherPtr
Shared-ownership pointer to a semantics instruction dispatcher.
 
boost::shared_ptr< State > StatePtr
Shared-ownership pointer to a semantic state.