|
| Capstone2LlvmIrTranslatorMips_impl (llvm::Module *m, cs_mode basic=CS_MODE_MIPS32, cs_mode extra=CS_MODE_LITTLE_ENDIAN) |
|
virtual bool | isAllowedBasicMode (cs_mode m) override |
|
virtual bool | isAllowedExtraMode (cs_mode m) override |
|
virtual uint32_t | getArchByteSize () override |
|
virtual bool | hasDelaySlot (uint32_t id) const override |
|
virtual bool | hasDelaySlotTypical (uint32_t id) const override |
|
virtual bool | hasDelaySlotLikely (uint32_t id) const override |
|
virtual std::size_t | getDelaySlot (uint32_t id) const override |
|
| Capstone2LlvmIrTranslator_impl (cs_arch a, cs_mode basic, cs_mode extra, llvm::Module *m) |
|
virtual | ~Capstone2LlvmIrTranslator_impl () |
|
virtual void | setIgnoreUnexpectedOperands (bool f) override |
|
virtual void | setIgnoreUnhandledInstructions (bool f) override |
|
virtual void | setGeneratePseudoAsmFunctions (bool f) override |
|
virtual bool | isIgnoreUnexpectedOperands () const override |
|
virtual bool | isIgnoreUnhandledInstructions () const override |
|
virtual bool | isGeneratePseudoAsmFunctions () const override |
|
virtual void | modifyBasicMode (cs_mode m) override |
|
virtual void | modifyExtraMode (cs_mode m) override |
|
virtual uint32_t | getArchBitSize () override |
|
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) override |
|
virtual TranslationResultOne | translateOne (const uint8_t *&bytes, std::size_t &size, retdec::common::Address &a, llvm::IRBuilder<> &irb) override |
|
virtual const csh & | getCapstoneEngine () const override |
|
virtual cs_arch | getArchitecture () const override |
|
virtual cs_mode | getBasicMode () const override |
|
virtual cs_mode | getExtraMode () const override |
|
virtual llvm::GlobalVariable * | getRegister (uint32_t r) override |
|
virtual std::string | getRegisterName (uint32_t r) const override |
|
virtual uint32_t | getRegisterBitSize (uint32_t r) const override |
|
virtual uint32_t | getRegisterByteSize (uint32_t r) const override |
|
virtual llvm::Type * | getRegisterType (uint32_t r) const override |
|
virtual bool | isControlFlowInstruction (cs_insn &i) const override |
|
virtual bool | isCallInstruction (cs_insn &i) const override |
|
virtual bool | isReturnInstruction (cs_insn &i) const override |
|
virtual bool | isBranchInstruction (cs_insn &i) const override |
|
virtual bool | isCondBranchInstruction (cs_insn &i) const override |
|
virtual llvm::Module * | getModule () const override |
|
virtual bool | isSpecialAsm2LlvmMapGlobal (llvm::Value *v) const override |
|
virtual llvm::StoreInst * | isSpecialAsm2LlvmInstr (llvm::Value *v) const override |
|
virtual llvm::GlobalVariable * | getAsm2LlvmMapGlobalVariable () const override |
|
virtual bool | isCallFunction (llvm::Function *f) const override |
|
virtual bool | isCallFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::BranchInst * | isInConditionCallFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::Function * | getCallFunction () const override |
|
virtual bool | isReturnFunction (llvm::Function *f) const override |
|
virtual bool | isReturnFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::BranchInst * | isInConditionReturnFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::Function * | getReturnFunction () const override |
|
virtual bool | isBranchFunction (llvm::Function *f) const override |
|
virtual bool | isBranchFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::BranchInst * | isInConditionBranchFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::Function * | getBranchFunction () const override |
|
virtual bool | isCondBranchFunction (llvm::Function *f) const override |
|
virtual bool | isCondBranchFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::BranchInst * | isInConditionCondBranchFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::Function * | getCondBranchFunction () const override |
|
virtual bool | isAnyPseudoFunction (llvm::Function *f) const override |
|
virtual bool | isAnyPseudoFunctionCall (llvm::CallInst *c) const override |
|
virtual llvm::GlobalVariable * | isRegister (llvm::Value *v) const override |
|
virtual uint32_t | getCapstoneRegister (llvm::GlobalVariable *gv) const override |
|
virtual bool | isPseudoAsmFunction (llvm::Function *f) const override |
|
virtual bool | isPseudoAsmFunctionCall (llvm::CallInst *c) const override |
|
virtual const std::set< llvm::Function * > & | getPseudoAsmFunctions () const override |
|
virtual | ~Capstone2LlvmIrTranslator ()=default |
|
|
virtual void | initializeArchSpecific () override |
|
virtual void | initializeRegNameMap () override |
|
virtual void | initializeRegTypeMap () override |
|
virtual void | initializePseudoCallInstructionIDs () override |
|
virtual void | generateEnvironmentArchSpecific () override |
|
virtual void | generateDataLayout () override |
|
virtual void | generateRegisters () override |
|
virtual uint32_t | getCarryRegister () override |
|
virtual void | translateInstruction (cs_insn *i, llvm::IRBuilder<> &irb) override |
|
llvm::Value * | getCurrentPc (cs_insn *i) |
|
llvm::Value * | getNextNextInsnAddress (cs_insn *i) |
|
llvm::Value * | getUnpredictableValue () |
|
uint32_t | singlePrecisionToDoublePrecisionFpRegister (uint32_t r) const |
|
virtual llvm::Value * | loadRegister (uint32_t r, llvm::IRBuilder<> &irb, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::THROW) override |
|
virtual llvm::Value * | loadOp (cs_mips_op &op, llvm::IRBuilder<> &irb, llvm::Type *ty=nullptr, bool lea=false) override |
|
virtual llvm::StoreInst * | storeRegister (uint32_t r, llvm::Value *val, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::SEXT_TRUNC_OR_BITCAST) override |
|
virtual llvm::Instruction * | storeOp (cs_mips_op &op, llvm::Value *val, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::SEXT_TRUNC_OR_BITCAST) override |
|
llvm::StoreInst * | storeRegisterUnpredictable (uint32_t r, llvm::IRBuilder<> &irb) |
|
bool | isFpInstructionVariant (cs_insn *i) |
|
virtual bool | isOperandRegister (cs_mips_op &op) override |
|
bool | isGeneralPurposeRegister (uint32_t r) |
|
void | translateAdd (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateAnd (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateBc1f (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateBc1t (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateBcondal (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateBreak (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateC (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateClo (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateClz (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateCondBranchTernary (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateCondBranchBinary (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateCvt (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateDiv (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateDivu (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateExt (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateJ (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateJal (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateLoadMemory (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateLui (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMadd (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMaddf (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMax (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMfc1 (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMfhi (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMflo (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMin (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMov (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMsub (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMsubf (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMtc1 (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMthi (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMtlo (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMovf (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMovn (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMovt (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMovz (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMul (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateMult (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNeg (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNegu (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNmadd (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNmsub (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNop (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNor (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateNot (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateOr (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateRotr (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSeb (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSeh (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSeq (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSll (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSlt (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSltu (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSne (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSra (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSrl (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateStoreMemory (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSub (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateSyscall (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
void | translateXor (cs_insn *i, cs_mips *mi, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateTypeConversion (llvm::IRBuilder<> &irb, llvm::Value *from, llvm::Type *to, eOpConv ct) |
|
llvm::Type * | _checkTypeConversion (llvm::IRBuilder<> &irb, llvm::Type *to, eOpConv ct) |
|
virtual void | initialize () |
|
virtual void | openHandle () |
|
virtual void | configureHandle () |
|
virtual void | closeHandle () |
|
virtual void | generateEnvironment () |
|
virtual void | generateSpecialAsm2LlvmMapGlobal () |
|
virtual llvm::StoreInst * | generateSpecialAsm2LlvmInstr (llvm::IRBuilder<> &irb, cs_insn *i) |
|
virtual void | generateCallFunction () |
|
virtual llvm::CallInst * | generateCallFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *t) |
|
virtual llvm::CallInst * | generateCondCallFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *cond, llvm::Value *t) |
|
virtual void | generateReturnFunction () |
|
virtual llvm::CallInst * | generateReturnFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *t) |
|
virtual llvm::CallInst * | generateCondReturnFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *cond, llvm::Value *t) |
|
virtual void | generateBranchFunction () |
|
virtual llvm::CallInst * | generateBranchFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *t) |
|
virtual void | generateCondBranchFunction () |
|
virtual llvm::CallInst * | generateCondBranchFunctionCall (llvm::IRBuilder<> &irb, llvm::Value *cond, llvm::Value *t) |
|
virtual llvm::GlobalVariable * | createRegister (uint32_t r, llvm::GlobalValue::LinkageTypes lt=llvm::GlobalValue::LinkageTypes::InternalLinkage, llvm::Constant *initializer=nullptr) |
|
virtual llvm::Value * | loadRegister (uint32_t r, llvm::IRBuilder<> &irb, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::THROW)=0 |
|
llvm::Value * | loadOp (cs_mips *ci, llvm::IRBuilder<> &irb, std::size_t idx, llvm::Type *loadType=nullptr, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::NOTHING) |
|
virtual llvm::Instruction * | storeRegister (uint32_t r, llvm::Value *val, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::SEXT_TRUNC_OR_BITCAST)=0 |
|
virtual llvm::Instruction * | storeOp (cs_mips_op &op, llvm::Value *val, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::SEXT_TRUNC_OR_BITCAST)=0 |
|
std::vector< llvm::Value * > | _loadOps (cs_mips *ci, llvm::IRBuilder<> &irb, std::size_t opCnt, bool strictCheck=true, llvm::Type *loadType=nullptr, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::NOTHING) |
|
std::vector< llvm::Value * > | _loadOpsUniversal (cs_mips *ci, llvm::IRBuilder<> &irb, std::size_t opCnt, bool strictCheck=true, eOpConv ict=eOpConv::SEXT_TRUNC_OR_BITCAST, eOpConv fct=eOpConv::FPCAST_OR_BITCAST) |
|
llvm::Value * | loadOpUnary (cs_mips *ci, llvm::IRBuilder<> &irb, llvm::Type *dstType=nullptr, llvm::Type *loadType=nullptr, eOpConv ct=eOpConv::THROW) |
|
std::pair< llvm::Value *, llvm::Value * > | loadOpBinary (cs_mips *ci, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::NOTHING) |
|
std::pair< llvm::Value *, llvm::Value * > | loadOpBinary (cs_mips *ci, llvm::IRBuilder<> &irb, eOpConv ict, eOpConv fct) |
|
std::pair< llvm::Value *, llvm::Value * > | loadOpBinary (cs_mips *ci, llvm::IRBuilder<> &irb, llvm::Type *loadType, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::NOTHING) |
|
llvm::Value * | loadOpBinaryOp0 (cs_mips *ci, llvm::IRBuilder<> &irb, llvm::Type *ty=nullptr) |
|
llvm::Value * | loadOpBinaryOp1 (cs_mips *ci, llvm::IRBuilder<> &irb, llvm::Type *ty=nullptr) |
|
std::tuple< llvm::Value *, llvm::Value *, llvm::Value * > | loadOpTernary (cs_mips *ci, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::NOTHING) |
|
std::tuple< llvm::Value *, llvm::Value *, llvm::Value * > | loadOpTernary (cs_mips *ci, llvm::IRBuilder<> &irb, eOpConv ict, eOpConv fct) |
|
std::tuple< llvm::Value *, llvm::Value *, llvm::Value * > | loadOpTernary (cs_mips *ci, llvm::IRBuilder<> &irb, llvm::Type *loadType, llvm::Type *dstType=nullptr, eOpConv ct=eOpConv::NOTHING) |
|
std::pair< llvm::Value *, llvm::Value * > | loadOpBinaryOrTernaryOp1Op2 (cs_mips *ai, llvm::IRBuilder<> &irb, eOpConv ct=eOpConv::NOTHING) |
|
std::pair< llvm::Value *, llvm::Value * > | loadOpBinaryOrTernaryOp1Op2 (cs_mips *ai, llvm::IRBuilder<> &irb, eOpConv ict, eOpConv fct) |
|
std::tuple< llvm::Value *, llvm::Value *, llvm::Value * > | loadOpQuaternaryOp1Op2Op3 (cs_mips *ai, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateCarryAdd (llvm::Value *add, llvm::Value *op0, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateCarryAddC (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::Value * | generateCarryAddInt4 (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateCarryAddCInt4 (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::Value * | generateOverflowAdd (llvm::Value *add, llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateOverflowAddC (llvm::Value *add, llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::Value * | generateOverflowSub (llvm::Value *sub, llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateOverflowSubC (llvm::Value *sub, llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::Value * | generateBorrowSub (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateBorrowSubC (llvm::Value *sub, llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::Value * | generateBorrowSubInt4 (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb) |
|
llvm::Value * | generateBorrowSubCInt4 (llvm::Value *op0, llvm::Value *op1, llvm::IRBuilder<> &irb, llvm::Value *cf=nullptr) |
|
llvm::IntegerType * | getDefaultType () |
|
llvm::Value * | getThisInsnAddress (cs_insn *i) |
|
llvm::Value * | getNextInsnAddress (cs_insn *i) |
|
llvm::BranchInst * | getCondBranchForInsnInIfThen (llvm::Instruction *i) const |
|
std::string | getPseudoAsmFunctionName (cs_insn *insn) |
|
llvm::Function * | getPseudoAsmFunction (cs_insn *insn, llvm::FunctionType *type, const std::string &name="") |
|
llvm::Function * | getPseudoAsmFunction (cs_insn *insn, llvm::Type *retType, llvm::ArrayRef< llvm::Type * > params, const std::string &name="") |
|
void | translatePseudoAsmOp0Fnc (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmFncOp0 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp0 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmFncOp0Op1 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp1 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp0Op1 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmFncOp0Op1Op2 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp1Op2 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp0Op1Op2 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmFncOp0Op1Op2Op3 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp1Op2Op3 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0FncOp0Op1Op2Op3 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | translatePseudoAsmOp0Op1FncOp0Op1Op2Op3 (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
virtual uint8_t | getOperandAccess (cs_mips_op &op) |
|
virtual void | translatePseudoAsmGeneric (cs_insn *i, cs_mips *ci, llvm::IRBuilder<> &irb) |
|
void | throwUnexpectedOperands (cs_insn *i, const std::string comment="") |
|
void | throwUnhandledInstructions (cs_insn *i, const std::string comment="") |
|