7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_X87_FPU_X87_FPU_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_X87_FPU_X87_FPU_H
12 #include <llvm/IR/Module.h>
13 #include <llvm/Pass.h>
19 #define EMPTY_FPU_STACK 8
20 #define RETURN_VALUE_PASSED_THROUGH_ST0 7
21 #define DECREMENT_FPU_STACK -1
22 #define NOP_FPU_STACK 0
23 #define ANALYZE_FAIL false
24 #define ANALYZE_SUCCESS true
25 #define PERFORMANCE_CEIL 1000
30 class FunctionAnalyzeMetadata;
46 std::list<FunctionAnalyzeMetadata>& analyzedFunctionsMetadata,
51 std::list<FunctionAnalyzeMetadata>& analyzedFunctionsMetadata,
60 std::list<FunctionAnalyzeMetadata>& analyzedFunctionsMetadata);
62 std::list<FunctionAnalyzeMetadata>& analyzedFunctionsMetadata,
63 llvm::Instruction& analyzedInstr);
72 llvm::GlobalVariable*
top =
nullptr;
74 std::list<FunctionAnalyzeMetadata>::iterator
getFunMd(
75 std::list<FunctionAnalyzeMetadata>& analyzedFunctionsMetadata,
Config DB provider for bin2llvmirl.
virtual bool runOnModule(llvm::Module &m) override
Definition: x87_fpu.cpp:93
bool runOnModuleCustom(llvm::Module &m, Config *c, Abi *a)
Definition: x87_fpu.cpp:101
bool isValidRegisterIndex(int index)
Definition: x87_fpu.cpp:470
bool optimizeAnalyzedFpuInstruction(std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata)
Definition: x87_fpu.cpp:475
std::list< FunctionAnalyzeMetadata >::iterator getFunMd(std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, llvm::Function *fun)
Definition: x87_fpu.cpp:285
bool run()
Definition: x87_fpu.cpp:205
bool analyzeInstruction(std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, FunctionAnalyzeMetadata &funMd, llvm::Instruction *i, int &outTop)
Definition: x87_fpu.cpp:302
bool checkArchAndCallConvException(llvm::Function *fun)
Definition: x87_fpu.cpp:173
bool analyzeBasicBlock(std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, FunctionAnalyzeMetadata &funMd, llvm::BasicBlock *bb, int &outTop)
Definition: x87_fpu.cpp:451
static char ID
Definition: x87_fpu.h:35
Abi * _abi
Definition: x87_fpu.h:71
llvm::GlobalVariable * top
Definition: x87_fpu.h:72
llvm::Module * _module
Definition: x87_fpu.h:69
int expectedTopBasedOnRestOfBlock(std::list< FunctionAnalyzeMetadata > &analyzedFunctionsMetadata, llvm::Instruction &analyzedInstr)
Definition: x87_fpu.cpp:393
Config * _config
Definition: x87_fpu.h:70
X87FpuAnalysis()
Definition: x87_fpu.cpp:87
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19
Construction of symbolic tree from the given node.