public void FindInstructionUsesCond() { m.Assign(ax, m.IAdd(ax, cx)); m.Assign(SCZ, m.Cond(ax)); var block = m.CurrentBlock; m.Assign(dx, m.IAdd(m.IAdd(dx, bx), CF)); m.Return(); var cm = rw.FindConditionOf(block.Statements, 0, ax); var asc = rw.FindUsingInstruction(block.Statements, cm.StatementIndex, new AddSubCandidate { Left = ax, Right = cx }); Assert.AreEqual("dx = dx + bx + C", block.Statements[asc.StatementIndex].Instruction.ToString()); }
public void Larw_FindInstructionUsesCond() { RunTest(m => { m.Assign(ax, m.IAdd(ax, cx)); m.Assign(SCZ, m.Cond(ax)); block = m.CurrentBlock; m.Assign(dx, m.IAdd(m.IAdd(dx, bx), CF)); m.Return(); }); m.Procedure.Dump(true); var cm = rw.FindConditionOf(block.Statements, 0, GetId("ax_3")); //Assert.AreEqual("ax_3,0,SCZ_4,SCZ_4 = cond(ax_3),SCZ_4", string.Format("{0},{1},{2},{3}", cm.src, cm.StatementIndex, cm.Statement, cm.FlagGroup)); var asc = rw.FindUsingInstruction(cm.FlagGroup, new AddSubCandidate(Operator.IAdd, ax, cx)); Assert.AreEqual("dx_8 = dx + bx + C_7", asc.Statement.ToString()); }