コード例 #1
0
ファイル: MemorySpace.cs プロジェクト: kthompson/csharpos
        public MemorySpace(uint startAddress, uint size, bool free, MemorySpace prev, MemorySpace next)
        {
            this.StartAddress = startAddress;
            this.EndAddress = startAddress + size - 1;
            this.Free = free;

            this.SetAdjacentMemorySpaces(prev, next);
        }
コード例 #2
0
ファイル: MemorySpace.cs プロジェクト: kthompson/csharpos
        public MemorySpace(bool free, uint startAddress, uint endAddress, MemorySpace prev, MemorySpace next)
        {
            this.StartAddress = startAddress;
            this.EndAddress = endAddress;
            this.Free = free;

            this.SetAdjacentMemorySpaces(prev, next);
        }
コード例 #3
0
        public void ConstructorTests()
        {
            var m = new MemorySpace(0, 100);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Null(m.Next);
            Assert.Null(m.Previous);

            m = new MemorySpace(true, 0, 99);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.True(m.Free);
            Assert.Null(m.Next);
            Assert.Null(m.Previous);

            m = new MemorySpace(0, 100, false);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Null(m.Next);
            Assert.Null(m.Previous);

            var prev = new MemorySpace(0, 0);
            var next = new MemorySpace(0, 0);
            m = new MemorySpace(false, 0, 99, prev, next);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Equal(next, m.Next);
            Assert.Equal(prev, m.Previous);
            Assert.Equal(m, next.Previous);
            Assert.Equal(m, prev.Next);

            prev = new MemorySpace(0, 0);
            next = new MemorySpace(0, 0);
            m = new MemorySpace(0, 100,false, prev, next);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Equal(next, m.Next);
            Assert.Equal(prev, m.Previous);
            Assert.Equal(m, next.Previous);
            Assert.Equal(m, prev.Next);
        }
コード例 #4
0
ファイル: MemorySegment.cs プロジェクト: kthompson/csharpos
        private static MemorySpace Slice(uint size, MemorySpace n)
        {
            //size should always be >= n.Size

            uint nSize = n.Size;
            n.Free = false;
            if (nSize == size)
                return n;

            //resize it
            n.Size = size;
            //insert new memory space in between
            new MemorySpace(n.EndAddress + 1, nSize - n.Size, true, n, n.Next);
            return n;
        }
コード例 #5
0
        public void SizeChange()
        {
            var m = new MemorySpace(0, 100);
            Assert.Equal(100u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(99u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Null(m.Next);
            Assert.Null(m.Previous);

            m.Size = 30;

            Assert.Equal(30u, m.Size);
            Assert.Equal(0u, m.StartAddress);
            Assert.Equal(29u, m.EndAddress);
            Assert.False(m.Free);
            Assert.Null(m.Next);
            Assert.Null(m.Previous);
        }
コード例 #6
0
ファイル: MemorySegment.cs プロジェクト: kthompson/csharpos
 public void FreeMemory(MemorySpace space)
 {
     space.Free = true;
 }
コード例 #7
0
ファイル: MemorySegment.cs プロジェクト: kthompson/csharpos
 protected MemorySegment(uint startAddress, uint size)
 {
     First = new MemorySpace(startAddress, size, true);
     this.Length = size;
 }
コード例 #8
0
ファイル: MemorySpace.cs プロジェクト: kthompson/csharpos
        private void SetAdjacentMemorySpaces(MemorySpace prev, MemorySpace next)
        {
            if (prev != null)
            {
                this.Previous = prev;
                prev.Next = this;
            }

            if (next == null)
                return;

            this.Next = next;
            next.Previous = this;
        }
コード例 #9
0
ファイル: MemorySpace.cs プロジェクト: PlumpMath/csharpos
        public MemorySpace(uint startAddress, uint size, bool free, MemorySpace prev, MemorySpace next)
        {
            this.StartAddress = startAddress;
            this.EndAddress   = startAddress + size - 1;
            this.Free         = free;

            this.SetAdjacentMemorySpaces(prev, next);
        }
コード例 #10
0
ファイル: MemorySpace.cs プロジェクト: PlumpMath/csharpos
        public MemorySpace(bool free, uint startAddress, uint endAddress, MemorySpace prev, MemorySpace next)
        {
            this.StartAddress = startAddress;
            this.EndAddress   = endAddress;
            this.Free         = free;

            this.SetAdjacentMemorySpaces(prev, next);
        }