private static void RunProgram(string assemblyCode) { Assembler assembler = new Assembler(); Instruction[] instructions = assembler.Assemble(assemblyCode); Memory memory = new Memory(); memory.LoadInstructions(instructions); Registers registers = new Registers(); registers.ValueWrittenToOutputRegister += System.Console.Write; Machine machine = new Machine(memory, registers); machine.Run(25); System.Console.ReadLine(); }
public void ShouldBeAbleToSaveMachineState() { Memory memory = new Memory(); memory.LoadInstructions(SamplePrograms.HelloWorldInstructions); Machine expectedMachine = new Machine(memory, new Registers()); expectedMachine.Run(); StateSaver stateSaver = new StateSaver(); stateSaver.SaveMachine(expectedMachine, _machineSaveFile); FileAssert.Exists(_machineSaveFile); Machine actualMachine = stateSaver.LoadMachine(_machineSaveFile); Assert.AreEqual(expectedMachine.State, actualMachine.State); Assert.AreEqual(expectedMachine.InstructionRegister, actualMachine.InstructionRegister); Assert.AreEqual(expectedMachine.ProgramCounter, actualMachine.ProgramCounter); }