public override void Execute(AbstractMachineState state) { AMProgram program = (AMProgram)state.Program; AMTrail trail = (AMTrail)state.Trail; AMHeap heap = (AMHeap)state.DataArea; ProgramClause nextClause = program[_label]; Choicepoint B = new Choicepoint(program.NumberOfArguments, state.E, program.CP, state.B, nextClause, trail.TR, heap.H); B.SaveRegisters(state, program.NumberOfArguments); state.B = B; program.Next(); }
public void SaveRegisters() { AbstractMachineState state = new AbstractMachineState(new AMFactory()); ArrayList prog = new ArrayList(); prog.Add(new HaltInstruction()); state.Initialize(prog); AbstractTerm X0 = (AbstractTerm)state["X0"]; AbstractTerm X1 = (AbstractTerm)state["X1"]; AbstractTerm X2 = (AbstractTerm)state["X2"]; X0.Assign(new ConstantTerm("ali")); X1.Assign(new ConstantTerm("samir")); X2.Assign(new ConstantTerm("moe")); Choicepoint c = new Choicepoint(); c.SaveRegisters(state, 3); Assert.AreEqual("ali", c["X0"].Data()); Assert.AreEqual("samir", c["X1"].Data()); Assert.AreEqual("moe", c["X2"].Data()); }