Esempio n. 1
0
        public void ProgramSignals()
        {
            var cpu = new Cpu(2048, 256);
            IdleProcess.Initialise(cpu, IdleProcess.Instructions);

            var prog1 = cpu.Load();
            var prog2 = cpu.Load();

            cpu.Compile(prog1, TestPrograms.P1);
            cpu.Compile(prog2, TestPrograms.P2);

            cpu.Run(prog1);
            cpu.Run(prog2);

            while (prog1.IsRunning || prog2.IsRunning)
            {
                cpu.Tick();
            }

            Assert.That(prog1.ExitCode, Is.EqualTo(1));
            Assert.That(prog2.ExitCode, Is.EqualTo(1));
        }
Esempio n. 2
0
        public void RunCpuWithProgram()
        {
            var cpu = new Cpu(2048, 256);
            IdleProcess.Initialise(cpu, IdleProcess.Instructions);

            var prog1 = cpu.Load();

            cpu.Compile(prog1, TestPrograms.ReallySimpleProgram);
            cpu.Run(prog1);

            while ( prog1.IsRunning )
            {
                cpu.Tick();
            }

            Assert.That(prog1.ExitCode, Is.EqualTo(1));
        }
Esempio n. 3
0
        private ProcessContextBlock Run(IEnumerable<Instruction> program, Cpu cpu)
        {
            IdleProcess.Initialise(cpu);

            var prog1 = cpu.Load();

            var codeSize = cpu.Compile(prog1, program);
            Console.WriteLine("Code Size: {0} bytes", codeSize);

            cpu.Run(prog1);

            var timeout = 1000;
            while (prog1.IsRunning)
            {
                cpu.Tick();
                timeout--;
                if (timeout == 0)
                    throw new Exception("Timed out while running program");
            }

            return prog1;
        }