Пример #1
0
        public void MemoryClear()
        {
            Instructions.Movi(_cpu, Register.A, 10);
            Instructions.Alloc(_cpu, Register.A, Register.B);

            Instructions.Movi(_cpu, Register.A, 0x12345678);
            Instructions.Pushr(_cpu, Register.B);
            Instructions.Movrm(_cpu, Register.B, Register.A);
            Instructions.Addi(_cpu, Register.B, 4);
            Instructions.Movrm(_cpu, Register.B, Register.A);
            Instructions.Addi(_cpu, Register.B, 4);
            Instructions.Movrm(_cpu, Register.B, Register.A);
            Instructions.Popr(_cpu, Register.B);

            var value = BitConverter.ToUInt64(_ram, _heapOffset);

            Assert.That(value, Is.EqualTo(0x1234567812345678));

            Instructions.Pushr(_cpu, Register.B);
            Instructions.Addi(_cpu, Register.B, 1);
            Instructions.Movi(_cpu, Register.A, 4);
            Instructions.MemoryClear(_cpu, Register.B, Register.A);
            Instructions.Popr(_cpu, Register.B);

            value = BitConverter.ToUInt64(_ram, _heapOffset);
            Console.WriteLine(value.ToString("x8"));
            Assert.That(value, Is.EqualTo(0x1234560000000078));

            Instructions.FreeMemory(_cpu, Register.B);
        }