case s8: target += i->eval().val.s8val; break;
case u8: target += i->eval().val.u8val; break;
case s16: target += i->eval().val.s16val; break;
case u16: target += i->eval().val.u16val; break;
case s32: target += i->eval().val.s32val; break;
case u32: target += i->eval().val.u32val; break;
}
}
virtual void visit(Dyninst::InstructionAPI::RegisterAST *) {}
OperandTarget(unsigned long eip) : target(eip) {};
unsigned long target;
};
unsigned long getTarget( _expression_::Ptr expr, unsigned long eip ){
OperandTarget o(eip);
expr->apply(&o);
return o.target;
}