【发布时间】:2019-03-12 04:06:50
【问题描述】:
我正在尝试更改 pin 文档中的 Memory Reference Trace (Instruction Instrumentation) 示例。
我的目标是从每条访问内存的指令中提取要读取/写入的内存大小的大小(以字节为单位)。
查看文档发现需要使用
IARG_MEMORYREAD_SIZE
IARG_MEMORYWRITE_SIZE
保持那个尺寸。
我在文档中找不到如何从指令中提取这些数据。
这是我的代码:
for (UINT32 memOp = 0; memOp < memOperands; memOp++)
{
if (INS_MemoryOperandIsRead(ins, memOp))
{
if(INS_hasKnownMemorySize(ins))
{
//IARG_MEMORYREAD_SIZE memReadSize = what to do here?
INS_InsertPredicatedCall(
ins, IPOINT_BEFORE, (AFUNPTR)MyFuncWhenRead,
IARG_INST_PTR,
IARG_MEMORYOP_EA, memOp,
IARG_END);
}
}
if (INS_MemoryOperandIsWritten(ins, memOp))
{
if(INS_hasKnownMemorySize(ins))
{
//IARG_MEMORYREAD_SIZE memWriteSize = what to do here?
INS_InsertPredicatedCall(
ins, IPOINT_BEFORE, (AFUNPTR)MyFuncWhenWrite,
IARG_INST_PTR,
IARG_MEMORYOP_EA, memOp,
IARG_END);
}
}
}
不胜感激帮助解决这个问题。 也就是在注释的那一行写什么
//IARG_MEMORYREAD_SIZE memReadSize = ???
谢谢!
【问题讨论】:
标签: intel-pin