1#ifndef ROSE_BinaryAnalysis_CallingConvention_BasicTypes_H
2#define ROSE_BinaryAnalysis_CallingConvention_BasicTypes_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
6#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
8#include <Sawyer/Message.h>
13namespace BinaryAnalysis {
14namespace CallingConvention {
Function calling convention.
Information about calling conventions.
Base class for pool of locations.
A storage pool for explicit locations.
A storage pool for stack-based argument locations.
Base class for type predicates.
Reference-counting intrusive smart pointer.
std::shared_ptr< TypePredicate > TypePredicatePtr
Shared-ownership pointer to TypePredicate.
std::shared_ptr< const StoragePoolEnumerated > StoragePoolEnumeratedConstPtr
Shared-ownership pointer to StoragePoolEnumerated.
void writeArgument(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, size_t argNumber, const InstructionSemantics::BaseSemantics::SValuePtr &value)
Write a function argument to a semantic state.
void writeReturnValue(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, const InstructionSemantics::BaseSemantics::SValuePtr &returnValue)
Write a value to a function return semantic state.
std::shared_ptr< const Allocator > AllocatorConstPtr
Shared-ownership pointer to Allocator.
InstructionSemantics::BaseSemantics::SValuePtr readArgument(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, size_t argNumber)
Read a function argument from a semantic state.
Sawyer::Message::Facility mlog
Facility for diagnostic output.
void simulateFunctionReturn(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &)
Simulate a function return.
std::shared_ptr< Allocator > AllocatorPtr
Shared-ownership pointer to Allocator.
std::shared_ptr< StoragePoolStack > StoragePoolStackPtr
Shared-ownership pointer to StoragePoolStack.
StackParameterOrder
The order that arguments are pushed onto the stack.
@ RIGHT_TO_LEFT
Stack parameters pushed right to left (C order).
@ UNSPECIFIED
Stack parameter order is unknown or unspecified.
@ LEFT_TO_RIGHT
Stack parameters pushed left to right (Pascal order).
std::shared_ptr< const StoragePoolBase > StoragePoolBaseConstPtr
Shared-ownership pointer to StoragePoolBase.
void initDiagnostics()
Initialize diagnostics.
StackCleanup
Who is responsible for popping stack parameters.
@ BY_CALLEE
The called function pops all stack parameters.
@ BY_CALLER
The caller pops all stack parameters.
std::shared_ptr< const TypePredicate > TypePredicateConstPtr
Shared-ownership pointer to TypePredicate.
std::ostream & operator<<(std::ostream &, const Definition &)
Print a definition.
InstructionSemantics::BaseSemantics::SValuePtr readReturnValue(const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &)
Read the return value that a function is returning.
std::shared_ptr< StoragePoolEnumerated > StoragePoolEnumeratedPtr
Shared-ownership pointer to StoragePoolEnumerated.
StackDirection
The direction in which the stack grows.
@ GROWS_DOWN
A push decrements the stack pointer.
@ GROWS_UP
A push increments the stack pointer.
std::vector< DefinitionPtr > Dictionary
An ordered collection of calling convention definitions.
std::shared_ptr< StoragePoolBase > StoragePoolBasePtr
Shared-ownership pointer to StoragePoolBase.
std::shared_ptr< const StoragePoolStack > StoragePoolStackConstPtr
Shared-ownership pointer to StoragePoolStack.
boost::shared_ptr< RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to a RISC operators object.