Пример #1
0
        public void TestUnsignedValueTooLarge()
        {
            string code   = "sll $t0,$t0,40";
            var    result = MipsAsm.Assemble(code, memoryMock.Object);

            var anyErrors = result.Messages.Any(x => x.IsError);

            Assert.IsTrue(anyErrors);
        }
Пример #2
0
        public void TestLabelNotDefined()
        {
            string code   = "b l";
            var    result = MipsAsm.Assemble(code, memoryMock.Object);

            var anyErrors = result.Messages.Any(x => x.IsError);

            Assert.IsTrue(anyErrors);
        }
Пример #3
0
        public void TestLabelDefinedMoreThanOnce()
        {
            string code   = "l: .space 1 l: b l";
            var    result = MipsAsm.Assemble(code, memoryMock.Object);

            var anyErrors = result.Messages.Any(x => x.IsError);

            Assert.IsTrue(anyErrors);
        }
Пример #4
0
        public void TestBranchOffsetTooLarge()
        {
            string code   = "l: .space 80000 b l";
            var    result = MipsAsm.Assemble(code, memoryMock.Object);

            var anyErrors = result.Messages.Any(x => x.IsError);

            Assert.IsTrue(anyErrors);
        }
Пример #5
0
        public void AssembleByteInstructions(string code, byte[] expected)
        {
            var result = MipsAsm.Assemble(code, memoryMock.Object);

            var  anyErrors = result.Messages.Any(x => x.IsError);
            uint i         = 0;

            for (; i < expected.Length; i++)
            {
                memoryMock.VerifySet(x => x[i] = expected[i]);
            }
            Assert.IsFalse(anyErrors);
        }
Пример #6
0
        static void Main(string[] args)
        {
            Cpu    cpu  = new();
            string code = File.ReadAllText("NaivePrimalityTest.asm");

            for (uint i = 0; i < 100; i++)
            {
                cpu.Reset();
                MipsAsm.Assemble(code, cpu.Memory);
                cpu.Registers.A0 = i;
                cpu.CycleUntilTerminate();
            }
        }
Пример #7
0
        public void AssembleWordInstructions(string code, uint[] expected)
        {
            var result = MipsAsm.Assemble(code, memoryMock.Object);

            var  anyErrors = result.Messages.Any(x => x.IsError);
            uint i         = 0;

            for (; i < expected.Length; i++)
            {
                memoryMock.Verify(x => x.StoreWord(i * 4u, expected[i]));
            }
            memoryMock.Verify(x => x.StoreWord(i * 4u, Cpu.TerminateInstruction));
            Assert.IsFalse(anyErrors);
        }
Пример #8
0
        public void AssembleSingleInstruction(string code, uint?expected)
        {
            var result = MipsAsm.Assemble(code, memoryMock.Object);

            var anyErrors = result.Messages.Any(x => x.IsError);

            if (expected != null)
            {
                memoryMock.Verify(x => x.StoreWord(0u, (uint)expected));
                memoryMock.Verify(x => x.StoreWord(4u, Cpu.TerminateInstruction));
                Assert.IsFalse(anyErrors);
            }
            else
            {
                Assert.IsTrue(anyErrors);
            }
        }
Пример #9
0
 public static void Assemble() => MipsAsm.Assemble(Code, Memory);
Пример #10
0
 public static void Assemble() => AssemblerResult = MipsAsm.Assemble(Code, Memory);