示例#1
0
文件: 2 Mem.cs 项目: ratajx/SO
        public static void XB()
        {
            Console.Write("Start programu"); Format.CWrite(ConsoleColor.Cyan, " XB");
            Console.WriteLine("");

            int r = 0;
            if (rejestry.r2.GetType() == typeof(int))
            {
                r = Mem.MEMORY[(int)rejestry.r2];
                r = r << 8;
                r += Mem.MEMORY[(int)rejestry.r2 + 1];
            }

            if (podreczna == 1)
                r = 256;

            int a;
            if (usuwanie == 1)
            {
                a = Mem.MEMORY[(int)rejestry.r2 + 2];
                a = a << 8;
                a += Mem.MEMORY[(int)rejestry.r2 + 3];
                usuwanie = 0;
            }
            else
                a = (int)rejestry.r3;

            FSB fsb = new FSB(a + r, 65535, 65535 - (a + r - 1));

            if (FSB_LIST.Count == 1)
            {
                FSB_LIST.Clear();
                FSB_LIST.Add(fsb);
                Console.WriteLine("Dołączono nowy blok do listy bloków FSB, adres: " + (a + r) + "-" + 65535 + ", rozmiar: " + (65535 - (a + r - 1)));
                Console.WriteLine("");
            }
            else
            {
                int tmp = 0;
                int tmp1 = 0;
                for (int i = 0; i < FSB_LIST.Count; i++)
                {
                    if (FSB_LIST[i].pocz == a)
                    {
                        tmp = FSB_LIST[i].koniec;
                        FSB_LIST.RemoveAt(i);
                        if (a + r == FSB_LIST[i].koniec)
                            tmp1 = 1;
                    }
                }

                if (tmp1 == 0)
                {
                    fsb = new FSB(a + r, tmp, tmp - (a + r - 1));
                    FSB_LIST.Add(fsb);
                    Console.WriteLine("Dołączono nowy blok do listy bloków FSB, adres: " + (a + r) + "-" + tmp + ", rozmiar: " + (tmp - (a + r - 1)));
                    Console.WriteLine("");
                }

                if (tmp1 == 0)
                {
                    for (int i = 0; i < FSB_LIST.Count; i++)
                    {
                        if (FSB_LIST[i].koniec == FSB_LIST[i + 1].pocz - 1)
                        {
                            int pocz, konie, roz;
                            pocz = FSB_LIST[i].pocz;
                            konie = FSB_LIST[i + 1].koniec;
                            roz = FSB_LIST[i].wielkosc + FSB_LIST[i + 1].wielkosc;

                            FSB_LIST.RemoveAt(i);
                            FSB_LIST.RemoveAt(i + 1);

                            fsb = new FSB(pocz, konie, roz);
                            FSB_LIST.Add(fsb);
                            Console.WriteLine("Dołączono nowy blok do listy bloków FSB, adres: " + pocz + "-" + konie + ", rozmiar: " + roz);
                            Console.WriteLine("");
                        }
                    }

                }
                var sortedList = FSB_LIST.OrderBy(x => x.wielkosc).ToList();
                FSB_LIST = sortedList;
                Console.WriteLine("Przesortowano liste bloków FSB");
            }
        }
示例#2
0
文件: 2 Mem.cs 项目: ratajx/SO
 public static bool start(int i)
 {
     FSB free = new FSB(i, 65535, 65536 - i);
     FSB_LIST.Add(free);
     Console.Write("\nDołączono pierwszy nowy blok do listy bloków FSB, adres: " + i + "-" + 65535 + ", rozmiar: " + (65536 - i));
     return true;
 }