当前位置: 首页>>代码示例>>C++>>正文


C++ MemCpyInst::getOperand方法代码示例

本文整理汇总了C++中MemCpyInst::getOperand方法的典型用法代码示例。如果您正苦于以下问题:C++ MemCpyInst::getOperand方法的具体用法?C++ MemCpyInst::getOperand怎么用?C++ MemCpyInst::getOperand使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MemCpyInst的用法示例。


在下文中一共展示了MemCpyInst::getOperand方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: visitMemCpyInst

void PandaInstrumentVisitor::visitMemCpyInst(MemCpyInst &I){
    Function *F = mod->getFunction("log_dynval");
    if (!F) {
        printf("Instrumentation function not found\n");
        assert(1==0);
    }
    PtrToIntInst *PTII_SRC;
    PtrToIntInst *PTII_DST;
    CallInst *CI_SRC;
    CallInst *CI_DST;
    std::vector<Value*> argValues_src;
    std::vector<Value*> argValues_dst;

    PTII_DST = static_cast<PtrToIntInst*>(IRB.CreatePtrToInt(
        I.getOperand(0), wordType));
    argValues_dst.push_back(ConstantInt::get(ptrType,
        (uintptr_t)dynval_buffer));
    argValues_dst.push_back(ConstantInt::get(intType, ADDRENTRY));
    argValues_dst.push_back(ConstantInt::get(intType, STORE));
    argValues_dst.push_back(static_cast<Value*>(PTII_DST));

    PTII_SRC = static_cast<PtrToIntInst*>(IRB.CreatePtrToInt(
        I.getOperand(1), wordType));
    argValues_src.push_back(ConstantInt::get(ptrType,
        (uintptr_t)dynval_buffer));
    argValues_src.push_back(ConstantInt::get(intType, ADDRENTRY));
    argValues_src.push_back(ConstantInt::get(intType, LOAD));
    argValues_src.push_back(static_cast<Value*>(PTII_SRC));

    //The load must come first in the dynamic log
    CI_SRC = IRB.CreateCall(F, ArrayRef<Value*>(argValues_src));
    CI_SRC->insertBefore(static_cast<Instruction*>(&I));
    PTII_SRC->insertBefore(static_cast<Instruction*>(CI_SRC));

    //The store must come second in the dynamic log
    CI_DST = IRB.CreateCall(F, ArrayRef<Value*>(argValues_dst));
    CI_DST->insertBefore(static_cast<Instruction*>(&I));
    PTII_DST->insertBefore(static_cast<Instruction*>(CI_DST));
}
开发者ID:idkwim,项目名称:panda,代码行数:39,代码来源:panda_dynval_inst.cpp


注:本文中的MemCpyInst::getOperand方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。