retdec
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
retdec::bin2llvmir::CallingConvention Class Reference

#include <calling_convention.h>

Inheritance diagram for retdec::bin2llvmir::CallingConvention:
Inheritance graph
[legend]
Collaboration diagram for retdec::bin2llvmir::CallingConvention:
Collaboration graph
[legend]

Public Types

typedef std::unique_ptr< CallingConventionPtr
 
typedef retdec::common::CallingConventionID ID
 
typedef Ptr(* ConstructorMethod) (const Abi *)
 

Public Member Functions

 CallingConvention (const Abi *abi)
 
virtual ~CallingConvention ()=default
 
const std::vector< uint32_t > & getParamRegisters () const
 
const std::vector< uint32_t > & getParamFPRegisters () const
 
const std::vector< uint32_t > & getParamDoubleRegisters () const
 
const std::vector< uint32_t > & getParamVectorRegisters () const
 
const std::vector< uint32_t > & getReturnRegisters () const
 
const std::vector< uint32_t > & getReturnFPRegisters () const
 
const std::vector< uint32_t > & getReturnDoubleRegisters () const
 
const std::vector< uint32_t > & getReturnVectorRegisters () const
 
bool usesFPRegistersForParameters () const
 
std::size_t getMaxNumOfRegsPerParam () const
 
std::size_t getMaxNumOfFPRegsPerParam () const
 
std::size_t getMaxNumOfDoubleRegsPerParam () const
 
std::size_t getMaxNumOfVectorRegsPerParam () const
 
std::size_t getMaxNumOfRegsPerReturn () const
 
std::size_t getMaxNumOfFPRegsPerReturn () const
 
std::size_t getMaxNumOfDoubleRegsPerReturn () const
 
std::size_t getMaxNumOfVectorRegsPerReturn () const
 
bool getStackParamOrder () const
 
bool usesStackForParameters () const
 
bool passesLargeObjectsByReference () const
 
bool respectsRegisterCouples () const
 
virtual std::size_t getMaxBytesPerStackParam () const
 
virtual bool valueCanBeParameter (const llvm::Value *val) const
 
virtual bool canHoldReturnValue (const llvm::Value *val) const
 

Static Public Attributes

static const bool RTL = true
 
static const bool LTR = false
 

Protected Attributes

const Abi_abi
 
CallingConvention::ID _ccType
 
std::vector< uint32_t > _paramRegs {}
 
std::vector< uint32_t > _paramFPRegs {}
 
std::vector< uint32_t > _paramDoubleRegs {}
 
std::vector< uint32_t > _paramVectorRegs {}
 
std::vector< uint32_t > _returnRegs {}
 
std::vector< uint32_t > _returnFPRegs {}
 
std::vector< uint32_t > _returnDoubleRegs {}
 
std::vector< uint32_t > _returnVectorRegs {}
 
size_t _numOfRegsPerParam = 1
 
size_t _numOfFPRegsPerParam = 1
 
size_t _numOfDoubleRegsPerParam = 1
 
size_t _numOfVectorRegsPerParam = 1
 
size_t _numOfRegsPerReturn = 1
 
size_t _numOfFPRegsPerReturn = 1
 
size_t _numOfDoubleRegsPerReturn = 1
 
size_t _numOfVectorRegsPerReturn = 1
 
bool _stackParamOrder = RTL
 
bool _largeObjectsPassedByReference = false
 
bool _respectsRegCouples = false
 

Member Typedef Documentation

◆ ConstructorMethod

typedef Ptr(* retdec::bin2llvmir::CallingConvention::ConstructorMethod) (const Abi *)

◆ ID

◆ Ptr

Constructor & Destructor Documentation

◆ CallingConvention()

retdec::bin2llvmir::CallingConvention::CallingConvention ( const Abi abi)

◆ ~CallingConvention()

virtual retdec::bin2llvmir::CallingConvention::~CallingConvention ( )
virtualdefault

Member Function Documentation

◆ canHoldReturnValue()

bool retdec::bin2llvmir::CallingConvention::canHoldReturnValue ( const llvm::Value *  val) const
virtual

◆ getMaxBytesPerStackParam()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxBytesPerStackParam ( ) const
virtual

◆ getMaxNumOfDoubleRegsPerParam()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfDoubleRegsPerParam ( ) const

◆ getMaxNumOfDoubleRegsPerReturn()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfDoubleRegsPerReturn ( ) const

◆ getMaxNumOfFPRegsPerParam()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfFPRegsPerParam ( ) const

◆ getMaxNumOfFPRegsPerReturn()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfFPRegsPerReturn ( ) const

◆ getMaxNumOfRegsPerParam()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfRegsPerParam ( ) const

◆ getMaxNumOfRegsPerReturn()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfRegsPerReturn ( ) const

◆ getMaxNumOfVectorRegsPerParam()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfVectorRegsPerParam ( ) const

◆ getMaxNumOfVectorRegsPerReturn()

std::size_t retdec::bin2llvmir::CallingConvention::getMaxNumOfVectorRegsPerReturn ( ) const

◆ getParamDoubleRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getParamDoubleRegisters ( ) const

◆ getParamFPRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getParamFPRegisters ( ) const

◆ getParamRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getParamRegisters ( ) const

◆ getParamVectorRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getParamVectorRegisters ( ) const

◆ getReturnDoubleRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getReturnDoubleRegisters ( ) const

◆ getReturnFPRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getReturnFPRegisters ( ) const

◆ getReturnRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getReturnRegisters ( ) const

◆ getReturnVectorRegisters()

const std::vector< uint32_t > & retdec::bin2llvmir::CallingConvention::getReturnVectorRegisters ( ) const

◆ getStackParamOrder()

bool retdec::bin2llvmir::CallingConvention::getStackParamOrder ( ) const

◆ passesLargeObjectsByReference()

bool retdec::bin2llvmir::CallingConvention::passesLargeObjectsByReference ( ) const

◆ respectsRegisterCouples()

bool retdec::bin2llvmir::CallingConvention::respectsRegisterCouples ( ) const

◆ usesFPRegistersForParameters()

bool retdec::bin2llvmir::CallingConvention::usesFPRegistersForParameters ( ) const

◆ usesStackForParameters()

bool retdec::bin2llvmir::CallingConvention::usesStackForParameters ( ) const

◆ valueCanBeParameter()

bool retdec::bin2llvmir::CallingConvention::valueCanBeParameter ( const llvm::Value *  val) const
virtual

Member Data Documentation

◆ _abi

const Abi* retdec::bin2llvmir::CallingConvention::_abi
protected

◆ _ccType

CallingConvention::ID retdec::bin2llvmir::CallingConvention::_ccType
protected

◆ _largeObjectsPassedByReference

bool retdec::bin2llvmir::CallingConvention::_largeObjectsPassedByReference = false
protected

◆ _numOfDoubleRegsPerParam

size_t retdec::bin2llvmir::CallingConvention::_numOfDoubleRegsPerParam = 1
protected

◆ _numOfDoubleRegsPerReturn

size_t retdec::bin2llvmir::CallingConvention::_numOfDoubleRegsPerReturn = 1
protected

◆ _numOfFPRegsPerParam

size_t retdec::bin2llvmir::CallingConvention::_numOfFPRegsPerParam = 1
protected

◆ _numOfFPRegsPerReturn

size_t retdec::bin2llvmir::CallingConvention::_numOfFPRegsPerReturn = 1
protected

◆ _numOfRegsPerParam

size_t retdec::bin2llvmir::CallingConvention::_numOfRegsPerParam = 1
protected

◆ _numOfRegsPerReturn

size_t retdec::bin2llvmir::CallingConvention::_numOfRegsPerReturn = 1
protected

◆ _numOfVectorRegsPerParam

size_t retdec::bin2llvmir::CallingConvention::_numOfVectorRegsPerParam = 1
protected

◆ _numOfVectorRegsPerReturn

size_t retdec::bin2llvmir::CallingConvention::_numOfVectorRegsPerReturn = 1
protected

◆ _paramDoubleRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_paramDoubleRegs {}
protected

◆ _paramFPRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_paramFPRegs {}
protected

◆ _paramRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_paramRegs {}
protected

◆ _paramVectorRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_paramVectorRegs {}
protected

◆ _respectsRegCouples

bool retdec::bin2llvmir::CallingConvention::_respectsRegCouples = false
protected

◆ _returnDoubleRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_returnDoubleRegs {}
protected

◆ _returnFPRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_returnFPRegs {}
protected

◆ _returnRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_returnRegs {}
protected

◆ _returnVectorRegs

std::vector<uint32_t> retdec::bin2llvmir::CallingConvention::_returnVectorRegs {}
protected

◆ _stackParamOrder

bool retdec::bin2llvmir::CallingConvention::_stackParamOrder = RTL
protected

◆ LTR

const bool retdec::bin2llvmir::CallingConvention::LTR = false
static

◆ RTL

const bool retdec::bin2llvmir::CallingConvention::RTL = true
static

The documentation for this class was generated from the following files: