pin 回顾

论文卡住了,又转回来看pin,*********,每次都有新发现:

刚开始看的时候囫囵吞枣,其实好多都不懂呢,补充一下:

pin能检测的层次:instruction,bbl(basic block),trace,routine,image

instruction是最低层次的,instruction指的是汇编指令,如mov ,inc,loop,etc。

bbl指一个入口一个出口的语句

trace是一个入口多个出口的语句,如if

routine 相当于一个函数

image是exe,dll(windows下),之类的映像文件。


下面我们比较分析几个pintool文件

下面分别来自inscount0.cpp、inscount1.cpp、proccount.cpp的三个语句

INS_InsertCall(ins,IPOINT_BEFORE, (AFUNPTR)printip, IARG_INST_PTR, IARG_END); 

BBL_InsertCall(bbl, IPOINT_BEFORE, (AFUNPTR)docount, IARG_UINT32, BBL_NumIns(bbl);

RTN_InsertCall(rtn,IPOINT_BEFORE, (AFUNPTR)docount,IARG_PTR, &(rc->_rtnCount), IARG_END);

通过对比我们发现,***_InsertCall()函数,表示在什么情况(针对不同的***由IPOINT_决定在***的前中后还是任意位置)下调用(AFUNPTR)函数进行相应的操作,如输出地址,计数等等。

.....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值