retdec
Public Member Functions | Private Member Functions | List of all members
retdec::bin2llvmir::MSX64Filter Class Reference

#include <ms_x64.h>

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

Public Member Functions

virtual void filterDefinitionArgs (FilterableLayout &args, bool isVoidarg) const override
 
virtual void filterCallArgs (FilterableLayout &args, bool isVoidarg) const override
 
virtual void filterArgsByKnownTypes (FilterableLayout &lay) const override
 
 Filter (const Abi *_abi, const CallingConvention *_cc)
 
- Public Member Functions inherited from retdec::bin2llvmir::Filter
 Filter (const Abi *_abi, const CallingConvention *_cc)
 
virtual ~Filter ()=default
 
void filterDefinition (DataFlowEntry *de) const
 
void filterCalls (DataFlowEntry *de) const
 
void filterCallsVariadic (DataFlowEntry *de, const Collector *collector) const
 
void estimateRetValue (DataFlowEntry *de) const
 

Private Member Functions

void leaveOnlyAlternatingArgRegisters (FilterableLayout &lay) const
 

Additional Inherited Members

- Public Types inherited from retdec::bin2llvmir::Filter
typedef std::unique_ptr< FilterPtr
 
- Protected Member Functions inherited from retdec::bin2llvmir::Filter
virtual void filterCallArgsByDefLayout (FilterableLayout &args, const FilterableLayout &def) const
 
virtual void filterRets (FilterableLayout &rets) const
 
virtual void filterRetsByDefLayout (FilterableLayout &args, const FilterableLayout &def) const
 
virtual void filterRetsByKnownTypes (FilterableLayout &lay) const
 
void leaveCommonArgs (std::vector< FilterableLayout > &allArgs) const
 
void leaveCommonRets (std::vector< FilterableLayout > &allRets) const
 
void leaveCommon (std::vector< FilterableLayout > &allRets) const
 
void orderFiterableLayout (FilterableLayout &lay) const
 
void orderStacks (std::vector< llvm::Value * > &stacks, bool asc=true) const
 
void orderRegistersBy (std::vector< uint32_t > &regs, const std::vector< uint32_t > &orderedVector) const
 
FilterableLayout createArgsFilterableLayout (const std::vector< llvm::Value * > &group, const std::vector< llvm::Type * > &knownTypes) const
 
FilterableLayout createRetsFilterableLayout (const std::vector< llvm::Value * > &group, llvm::Type *knownType) const
 
FilterableLayout createRetsFilterableLayout (const std::vector< llvm::Value * > &group, const std::vector< llvm::Type * > &knownTypes) const
 
virtual FilterableLayout separateArgValues (const std::vector< llvm::Value * > &paramValues) const
 
virtual FilterableLayout separateRetValues (const std::vector< llvm::Value * > &paramValues) const
 
virtual std::vector< llvm::Value * > createGroupedArgValues (const FilterableLayout &lay) const
 
virtual std::vector< llvm::Value * > createGroupedRetValues (const FilterableLayout &lay) const
 
FilterableLayout separateValues (const std::vector< llvm::Value * > &paramValues, const std::vector< uint32_t > &gpRegs, const std::vector< uint32_t > &fpRegs, const std::vector< uint32_t > &doubleRegs, const std::vector< uint32_t > &vecRegs) const
 
std::vector< llvm::Value * > createGroupedValues (const FilterableLayout &lay) const
 
std::vector< llvm::Type * > expandTypes (const std::vector< llvm::Type * > &types) const
 
std::size_t fetchGPRegsForType (llvm::Type *type, FilterableLayout &lay) const
 
std::size_t fetchFPRegsForType (llvm::Type *type, FilterableLayout &lay) const
 
std::size_t fetchDoubleRegsForType (llvm::Type *type, FilterableLayout &lay) const
 
std::size_t fetchVecRegsForType (llvm::Type *type, FilterableLayout &lay) const
 
std::size_t fetchRegsForType (llvm::Type *type, std::vector< uint32_t > &store, const std::vector< uint32_t > &regs, std::size_t maxRegsPerObject) const
 
std::size_t getNumberOfStacksForType (llvm::Type *type) const
 
void leaveOnlyPositiveStacks (FilterableLayout &lay) const
 
void leaveOnlyContinuousStack (FilterableLayout &lay) const
 
void leaveOnlyContinuousArgRegisters (FilterableLayout &lay) const
 
void leaveOnlyContinuousRetRegisters (FilterableLayout &lay) const
 
void leaveSameStacks (FilterableLayout &lay, const FilterableLayout &fig) const
 
void leaveOnlyContinuousRegisters (std::vector< uint32_t > &regs, const std::vector< uint32_t > &templRegs) const
 
void createContinuousArgRegisters (FilterableLayout &lay) const
 
- Protected Attributes inherited from retdec::bin2llvmir::Filter
const Abi_abi
 
const CallingConvention_cc
 

Member Function Documentation

◆ Filter()

retdec::bin2llvmir::Filter::Filter

◆ filterArgsByKnownTypes()

void retdec::bin2llvmir::MSX64Filter::filterArgsByKnownTypes ( FilterableLayout lay) const
overridevirtual

Reimplemented from retdec::bin2llvmir::Filter.

◆ filterCallArgs()

void retdec::bin2llvmir::MSX64Filter::filterCallArgs ( FilterableLayout args,
bool  isVoidarg 
) const
overridevirtual

Reimplemented from retdec::bin2llvmir::Filter.

◆ filterDefinitionArgs()

void retdec::bin2llvmir::MSX64Filter::filterDefinitionArgs ( FilterableLayout args,
bool  isVoidarg 
) const
overridevirtual

Reimplemented from retdec::bin2llvmir::Filter.

◆ leaveOnlyAlternatingArgRegisters()

void retdec::bin2llvmir::MSX64Filter::leaveOnlyAlternatingArgRegisters ( FilterableLayout lay) const
private

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