7 #ifndef RETDEC_BIN2LLVMIR_PROVIDERS_CALL_CONV_CALL_CONV_H
8 #define RETDEC_BIN2LLVMIR_PROVIDERS_CALL_CONV_CALL_CONV_H
12 #include <llvm/IR/Module.h>
26 typedef std::unique_ptr<CallingConvention>
Ptr;
34 static const bool RTL;
35 static const bool LTR;
146 std::vector<CallingConvention::ConstructorMethod>
_id2cc;
Definition: calling_convention.h:123
void registerCC(const CallingConvention::ID &cc, const CallingConvention::ConstructorMethod &con)
Definition: calling_convention.cpp:202
CallingConventionProvider()
Definition: calling_convention.cpp:169
static void clear()
Definition: calling_convention.cpp:195
static CallingConventionProvider * getProvider()
Definition: calling_convention.cpp:188
CallingConvention::Ptr createCallingConvention(const CallingConvention::ID &cc, const Abi *a) const
Definition: calling_convention.cpp:216
std::vector< CallingConvention::ConstructorMethod > _id2cc
Definition: calling_convention.h:146
Definition: calling_convention.h:22
std::vector< uint32_t > _paramVectorRegs
Definition: calling_convention.h:94
std::size_t getMaxNumOfFPRegsPerReturn() const
bool respectsRegisterCouples() const
Definition: calling_convention.cpp:118
std::size_t getMaxNumOfFPRegsPerParam() const
Definition: calling_convention.cpp:93
retdec::common::CallingConventionID ID
Definition: calling_convention.h:27
const Abi * _abi
Definition: calling_convention.h:85
size_t _numOfDoubleRegsPerReturn
Definition: calling_convention.h:111
const std::vector< uint32_t > & getReturnFPRegisters() const
Definition: calling_convention.cpp:68
virtual ~CallingConvention()=default
std::size_t getMaxNumOfRegsPerParam() const
Definition: calling_convention.cpp:88
const std::vector< uint32_t > & getReturnDoubleRegisters() const
Definition: calling_convention.cpp:73
bool usesFPRegistersForParameters() const
Definition: calling_convention.cpp:83
static const bool RTL
Definition: calling_convention.h:34
virtual bool canHoldReturnValue(const llvm::Value *val) const
Definition: calling_convention.cpp:148
const std::vector< uint32_t > & getReturnVectorRegisters() const
Definition: calling_convention.cpp:78
size_t _numOfDoubleRegsPerParam
Definition: calling_convention.h:106
std::vector< uint32_t > _paramRegs
Definition: calling_convention.h:91
std::size_t getMaxNumOfVectorRegsPerParam() const
Definition: calling_convention.cpp:103
std::size_t getMaxNumOfDoubleRegsPerReturn() const
std::vector< uint32_t > _returnDoubleRegs
Definition: calling_convention.h:98
bool passesLargeObjectsByReference() const
Definition: calling_convention.cpp:113
static const bool LTR
Definition: calling_convention.h:35
CallingConvention(const Abi *abi)
Definition: calling_convention.cpp:37
size_t _numOfFPRegsPerParam
Definition: calling_convention.h:105
size_t _numOfRegsPerReturn
Definition: calling_convention.h:109
size_t _numOfVectorRegsPerReturn
Definition: calling_convention.h:112
bool _stackParamOrder
Definition: calling_convention.h:117
size_t _numOfRegsPerParam
Definition: calling_convention.h:104
std::vector< uint32_t > _returnVectorRegs
Definition: calling_convention.h:99
std::vector< uint32_t > _returnRegs
Definition: calling_convention.h:96
virtual std::size_t getMaxBytesPerStackParam() const
Definition: calling_convention.cpp:123
bool _largeObjectsPassedByReference
Definition: calling_convention.h:118
const std::vector< uint32_t > & getParamFPRegisters() const
Definition: calling_convention.cpp:48
virtual bool valueCanBeParameter(const llvm::Value *val) const
Definition: calling_convention.cpp:128
std::vector< uint32_t > _returnFPRegs
Definition: calling_convention.h:97
CallingConvention::ID _ccType
Definition: calling_convention.h:86
size_t _numOfFPRegsPerReturn
Definition: calling_convention.h:110
bool usesStackForParameters() const
const std::vector< uint32_t > & getReturnRegisters() const
Definition: calling_convention.cpp:63
std::size_t getMaxNumOfRegsPerReturn() const
std::size_t getMaxNumOfDoubleRegsPerParam() const
Definition: calling_convention.cpp:98
const std::vector< uint32_t > & getParamVectorRegisters() const
Definition: calling_convention.cpp:58
Ptr(* ConstructorMethod)(const Abi *)
Definition: calling_convention.h:29
size_t _numOfVectorRegsPerParam
Definition: calling_convention.h:107
bool _respectsRegCouples
Definition: calling_convention.h:119
bool getStackParamOrder() const
Definition: calling_convention.cpp:108
const std::vector< uint32_t > & getParamRegisters() const
Definition: calling_convention.cpp:43
std::size_t getMaxNumOfVectorRegsPerReturn() const
std::vector< uint32_t > _paramDoubleRegs
Definition: calling_convention.h:93
std::unique_ptr< CallingConvention > Ptr
Definition: calling_convention.h:26
const std::vector< uint32_t > & getParamDoubleRegisters() const
Definition: calling_convention.cpp:53
std::vector< uint32_t > _paramFPRegs
Definition: calling_convention.h:92
eCC
Definition: calling_convention.h:24
Calling convention representation.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19