retdec
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
retdec::bin2llvmir::X87FpuAnalysis Class Reference

#include <x87_fpu.h>

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

Public Member Functions

 X87FpuAnalysis ()
 
virtual bool runOnModule (llvm::Module &m) override
 
bool runOnModuleCustom (llvm::Module &m, Config *c, Abi *a)
 

Static Public Attributes

static char ID = 0
 

Private Member Functions

bool run ()
 
bool analyzeBasicBlock (std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, FunctionAnalyzeMetadata &funMd, llvm::BasicBlock *bb, int &outTop)
 
bool analyzeInstruction (std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, FunctionAnalyzeMetadata &funMd, llvm::Instruction *i, int &outTop)
 
bool optimizeAnalyzedFpuInstruction (std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata)
 
int expectedTopBasedOnRestOfBlock (std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, llvm::Instruction &analyzedInstr)
 
bool checkArchAndCallConvException (llvm::Function *fun)
 
bool isValidRegisterIndex (int index)
 
std::list< FunctionAnalyzeMetadata >::iterator getFunMd (std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, llvm::Function *fun)
 

Private Attributes

llvm::Module * _module = nullptr
 
Config_config = nullptr
 
Abi_abi = nullptr
 
llvm::GlobalVariable * top = nullptr
 

Constructor & Destructor Documentation

◆ X87FpuAnalysis()

retdec::bin2llvmir::X87FpuAnalysis::X87FpuAnalysis ( )

Member Function Documentation

◆ analyzeBasicBlock()

bool retdec::bin2llvmir::X87FpuAnalysis::analyzeBasicBlock ( std::list< FunctionAnalyzeMetadata > &  analyzedFunctionsMetadata,
FunctionAnalyzeMetadata funMd,
llvm::BasicBlock *  bb,
int &  outTop 
)
private

◆ analyzeInstruction()

bool retdec::bin2llvmir::X87FpuAnalysis::analyzeInstruction ( std::list< FunctionAnalyzeMetadata > &  analyzedFunctionsMetadata,
FunctionAnalyzeMetadata funMd,
llvm::Instruction *  i,
int &  outTop 
)
private

◆ checkArchAndCallConvException()

bool retdec::bin2llvmir::X87FpuAnalysis::checkArchAndCallConvException ( llvm::Function *  fun)
private

◆ expectedTopBasedOnRestOfBlock()

int retdec::bin2llvmir::X87FpuAnalysis::expectedTopBasedOnRestOfBlock ( std::list< FunctionAnalyzeMetadata > &  analyzedFunctionsMetadata,
llvm::Instruction &  analyzedInstr 
)
private

◆ getFunMd()

std::list< FunctionAnalyzeMetadata >::iterator retdec::bin2llvmir::X87FpuAnalysis::getFunMd ( std::list< FunctionAnalyzeMetadata > &  analyzedFunctionsMetadata,
llvm::Function *  fun 
)
private

◆ isValidRegisterIndex()

bool retdec::bin2llvmir::X87FpuAnalysis::isValidRegisterIndex ( int  index)
private

◆ optimizeAnalyzedFpuInstruction()

bool retdec::bin2llvmir::X87FpuAnalysis::optimizeAnalyzedFpuInstruction ( std::list< FunctionAnalyzeMetadata > &  analyzedFunctionsMetadata)
private

Replace all FPU pseudo load and store function by load and store with concrete FPU registers.

◆ run()

bool retdec::bin2llvmir::X87FpuAnalysis::run ( )
private

◆ runOnModule()

bool retdec::bin2llvmir::X87FpuAnalysis::runOnModule ( llvm::Module &  m)
overridevirtual

◆ runOnModuleCustom()

bool retdec::bin2llvmir::X87FpuAnalysis::runOnModuleCustom ( llvm::Module &  m,
Config c,
Abi a 
)

Member Data Documentation

◆ _abi

Abi* retdec::bin2llvmir::X87FpuAnalysis::_abi = nullptr
private

◆ _config

Config* retdec::bin2llvmir::X87FpuAnalysis::_config = nullptr
private

◆ _module

llvm::Module* retdec::bin2llvmir::X87FpuAnalysis::_module = nullptr
private

◆ ID

char retdec::bin2llvmir::X87FpuAnalysis::ID = 0
static

◆ top

llvm::GlobalVariable* retdec::bin2llvmir::X87FpuAnalysis::top = nullptr
private

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