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); }
public static void Main(string[] args) { Machine machine = new Machine (); machine.Run(); }
private void TestBootSequence(Cartridge cart) { Machine machine = new Machine(); machine.SystemBootMode = BootMode.HLE_IPL_OLD; machine.DeviceRCP.DevicePI.MountCartridge(cart); Debugger debugger = new Debugger(); debugger.BreakOnBootMode = DebuggerBootEvent.PostBoot; debugger.DebugOnBreak = true; var mockedCPUEngine = new Mock<ExecutionEngine>(); var mockedRCPEngine = new Mock<ExecutionEngine>(); machine.DeviceCPU.Engine = mockedCPUEngine.Object; machine.DeviceRCP.Engine = mockedRCPEngine.Object; machine.Initialize(); machine.Run(); ExecutionState state = machine.DeviceCPU.State; /* CP0 Testing */ Assert.Equal(0x0000001FUL, state.CP0Regs[CP0RegName.Random]); Assert.Equal(0x00005000UL, state.CP0Regs[CP0RegName.Count]); Assert.Equal(0x0000005CUL, state.CP0Regs[CP0RegName.Cause]); Assert.Equal(0x007FFFF0UL, state.CP0Regs[CP0RegName.Context]); Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.EPC]); Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.BadVAddr]); Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.ErrorEPC]); Assert.Equal(0x0006E463UL, state.CP0Regs[CP0RegName.Config]); Assert.Equal(0x34000000UL, state.CP0Regs[CP0RegName.SR]); /* PIF Testing */ AssertPIFCodes( Cartridge.Current.RomImage.Region, Cartridge.Current.RomImage.BootRomInformation.CIC, state); debugger.Continue(); machine.Stop(); machine.Dispose(); }