retdec
Public Member Functions | List of all members
retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86 Class Referenceabstract

#include <x86.h>

Inheritance diagram for retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86:
Inheritance graph
[legend]
Collaboration diagram for retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86:
Collaboration graph
[legend]

Public Member Functions

virtual bool isX87DataStoreFunction (llvm::Function *f) const =0
 
virtual bool isX87DataStoreFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getX87DataStoreFunction () const =0
 
virtual bool isX87DataLoadFunction (llvm::Function *f) const =0
 
virtual bool isX87DataLoadFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getX87DataLoadFunction () const =0
 
virtual uint32_t getParentRegister (uint32_t r) const =0
 
- Public Member Functions inherited from retdec::capstone2llvmir::Capstone2LlvmIrTranslator
virtual ~Capstone2LlvmIrTranslator ()=default
 
virtual void setIgnoreUnexpectedOperands (bool f)=0
 
virtual void setIgnoreUnhandledInstructions (bool f)=0
 
virtual void setGeneratePseudoAsmFunctions (bool f)=0
 
virtual bool isIgnoreUnexpectedOperands () const =0
 
virtual bool isIgnoreUnhandledInstructions () const =0
 
virtual bool isGeneratePseudoAsmFunctions () const =0
 
virtual bool isAllowedBasicMode (cs_mode m)=0
 
virtual bool isAllowedExtraMode (cs_mode m)=0
 
virtual void modifyBasicMode (cs_mode m)=0
 
virtual void modifyExtraMode (cs_mode m)=0
 
virtual uint32_t getArchByteSize ()=0
 
virtual uint32_t getArchBitSize ()=0
 
virtual TranslationResult translate (const uint8_t *bytes, std::size_t size, retdec::common::Address a, llvm::IRBuilder<> &irb, std::size_t count=0, bool stopOnBranch=false)=0
 
virtual TranslationResultOne translateOne (const uint8_t *&bytes, std::size_t &size, retdec::common::Address &a, llvm::IRBuilder<> &irb)=0
 
virtual const csh & getCapstoneEngine () const =0
 
virtual cs_arch getArchitecture () const =0
 
virtual cs_mode getBasicMode () const =0
 
virtual cs_mode getExtraMode () const =0
 
virtual bool hasDelaySlot (uint32_t id) const =0
 
virtual bool hasDelaySlotTypical (uint32_t id) const =0
 
virtual bool hasDelaySlotLikely (uint32_t id) const =0
 
virtual std::size_t getDelaySlot (uint32_t id) const =0
 
virtual llvm::GlobalVariable * getRegister (uint32_t r)=0
 
virtual std::string getRegisterName (uint32_t r) const =0
 
virtual uint32_t getRegisterBitSize (uint32_t r) const =0
 
virtual uint32_t getRegisterByteSize (uint32_t r) const =0
 
virtual llvm::Type * getRegisterType (uint32_t r) const =0
 
virtual bool isControlFlowInstruction (cs_insn &i) const =0
 
virtual bool isCallInstruction (cs_insn &i) const =0
 
virtual bool isReturnInstruction (cs_insn &i) const =0
 
virtual bool isBranchInstruction (cs_insn &i) const =0
 
virtual bool isCondBranchInstruction (cs_insn &i) const =0
 
virtual llvm::Module * getModule () const =0
 
virtual bool isSpecialAsm2LlvmMapGlobal (llvm::Value *v) const =0
 
virtual llvm::StoreInst * isSpecialAsm2LlvmInstr (llvm::Value *v) const =0
 
virtual llvm::GlobalVariable * getAsm2LlvmMapGlobalVariable () const =0
 
virtual bool isCallFunction (llvm::Function *f) const =0
 
virtual bool isCallFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::BranchInst * isInConditionCallFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getCallFunction () const =0
 
virtual bool isReturnFunction (llvm::Function *f) const =0
 
virtual bool isReturnFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::BranchInst * isInConditionReturnFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getReturnFunction () const =0
 
virtual bool isBranchFunction (llvm::Function *f) const =0
 
virtual bool isBranchFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::BranchInst * isInConditionBranchFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getBranchFunction () const =0
 
virtual bool isCondBranchFunction (llvm::Function *f) const =0
 
virtual llvm::BranchInst * isInConditionCondBranchFunctionCall (llvm::CallInst *c) const =0
 
virtual bool isCondBranchFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::Function * getCondBranchFunction () const =0
 
virtual bool isAnyPseudoFunction (llvm::Function *f) const =0
 
virtual bool isAnyPseudoFunctionCall (llvm::CallInst *c) const =0
 
virtual llvm::GlobalVariable * isRegister (llvm::Value *v) const =0
 
virtual uint32_t getCapstoneRegister (llvm::GlobalVariable *gv) const =0
 
virtual bool isPseudoAsmFunction (llvm::Function *f) const =0
 
virtual bool isPseudoAsmFunctionCall (llvm::CallInst *c) const =0
 
virtual const std::set< llvm::Function * > & getPseudoAsmFunctions () const =0
 

Additional Inherited Members

- Static Public Member Functions inherited from retdec::capstone2llvmir::Capstone2LlvmIrTranslator
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateArch (cs_arch a, llvm::Module *m, cs_mode basic=CS_MODE_LITTLE_ENDIAN, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateArm (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateThumb (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateArm64 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateMips32 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateMips64 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateMips3 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateMips32R6 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateX86_16 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateX86_32 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateX86_64 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreatePpc32 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreatePpc64 (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreatePpcQpx (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateSparc (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateSysz (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 
static std::unique_ptr< Capstone2LlvmIrTranslatorcreateXcore (llvm::Module *m, cs_mode extra=CS_MODE_LITTLE_ENDIAN)
 

Detailed Description

x86 specialization of translator's abstract public interface.

Member Function Documentation

◆ getParentRegister()

virtual uint32_t retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::getParentRegister ( uint32_t  r) const
pure virtual
Returns
Capstone register that is parent to the specified Capstone register r. Register can be its own parent.

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ getX87DataLoadFunction()

virtual llvm::Function* retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::getX87DataLoadFunction ( ) const
pure virtual
Returns
LLVM function used as special pseudo function whose call in the translated LLVM IR represents a load of fp value (call return value) from the x87 fpu stack slot (first argument). Function signature:
fp80 (i3)

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ getX87DataStoreFunction()

virtual llvm::Function* retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::getX87DataStoreFunction ( ) const
pure virtual
Returns
LLVM function used as special pseudo function whose call in the translated LLVM IR represents a store of fp value (call second argument) to the x87 fpu stack slot (call first argument). Function signature:
void (i3, fp80)

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ isX87DataLoadFunction()

virtual bool retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::isX87DataLoadFunction ( llvm::Function *  f) const
pure virtual

Is the passed LLVM function f the special pseudo function whose call represents a load of fp value from the x87 fpu stack slot?

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ isX87DataLoadFunctionCall()

virtual bool retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::isX87DataLoadFunctionCall ( llvm::CallInst *  c) const
pure virtual

Is the passed LLVM call instruction c a special pseudo call instruction representing a load of fp value from the x87 fpu stack slot?

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ isX87DataStoreFunction()

virtual bool retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::isX87DataStoreFunction ( llvm::Function *  f) const
pure virtual

Is the passed LLVM function f the special pseudo function whose call represents a store of fp value to the x87 fpu stack slot?

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.

◆ isX87DataStoreFunctionCall()

virtual bool retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86::isX87DataStoreFunctionCall ( llvm::CallInst *  c) const
pure virtual

Is the passed LLVM call instruction c a special pseudo call instruction representing a store of fp value to the x87 fpu stack slot?

Implemented in retdec::capstone2llvmir::Capstone2LlvmIrTranslatorX86_impl.


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