Lines Matching refs:instr
148 bool WantToInstrument(instr_t *instr) { in WantToInstrument() argument
150 switch (instr_get_opcode(instr)) { in WantToInstrument()
158 if (instr_is_label(instr)) in WantToInstrument()
161 CHECK(instr_ok_to_mangle(instr) == true); in WantToInstrument()
163 if (instr_writes_memory(instr)) { in WantToInstrument()
164 for (int d = 0; d < instr_num_dsts(instr); d++) { in WantToInstrument()
165 opnd_t op = instr_get_dst(instr, d); in WantToInstrument()
177 void InstrumentMops(void *drcontext, instrlist_t *bb, instr_t *instr, opnd_t op, in InstrumentMops() argument
180 uint flags = instr_get_arith_flags(instr); in InstrumentMops()
192 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentMops()
193 dr_save_arith_flags_to_xax(drcontext, bb, instr); in InstrumentMops()
194 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_3); in InstrumentMops()
195 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentMops()
239 dr_save_reg(drcontext, bb, instr, R1, SPILL_SLOT_1); in InstrumentMops()
241 dr_save_reg(drcontext, bb, instr, R2, SPILL_SLOT_2); in InstrumentMops()
244 CHECK(drutil_insert_get_mem_addr(drcontext, bb, instr, op, R1, R2)); in InstrumentMops()
245 PRE(instr, mov_imm(drcontext, opnd_create_reg(R2), in InstrumentMops()
247 PRE(instr, and(drcontext, opnd_create_reg(R1), opnd_create_reg(R2))); in InstrumentMops()
253 PRE(instr, in InstrumentMops()
259 PRE(instr, in InstrumentMops()
265 dr_restore_reg(drcontext, bb, instr, R1, SPILL_SLOT_1); in InstrumentMops()
266 dr_restore_reg(drcontext, bb, instr, R2, SPILL_SLOT_2); in InstrumentMops()
272 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentMops()
273 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_3); in InstrumentMops()
274 dr_restore_arith_flags_from_xax(drcontext, bb, instr); in InstrumentMops()
275 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentMops()
282 void InstrumentReturn(void *drcontext, instrlist_t *bb, instr_t *instr) { in InstrumentReturn() argument
283 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentReturn()
287 dr_insert_get_seg_base(drcontext, bb, instr, DR_SEG_FS, DR_REG_XAX); in InstrumentReturn()
291 PRE(instr, in InstrumentReturn()
295 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentReturn()
302 instr_t *instr) { in InstrumentIndirectBranch() argument
303 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentIndirectBranch()
307 dr_insert_get_seg_base(drcontext, bb, instr, DR_SEG_FS, DR_REG_XAX); in InstrumentIndirectBranch()
312 PRE(instr, in InstrumentIndirectBranch()
318 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1); in InstrumentIndirectBranch()
418 instr_t *instr; in event_basic_block() local
419 for (instr = instrlist_first(bb); instr; instr = instr_get_next(instr)) { in event_basic_block()
420 dr_printf("opcode: %d\n", instr_get_opcode(instr)); in event_basic_block()