public bool IngresarBloqueInstrucciones(BloqueInstrucciones bloqueInstrucciones, int etiqueta)
        {
            this.bloqueInstrucciones[etiqueta % 4] = bloqueInstrucciones;
            this.etiquetas[etiqueta % 4]           = etiqueta;

            return(true);
        }
示例#2
0
        //Lee los archivos de los hilillos y carga los datos a la memoria de instrucciones
        public void LeeHilillos()
        {
            int posicionMemoria = 0;

            for (int i = 0; i < 1; i++)
            {
                string[]            lines = System.IO.File.ReadAllLines(@"C:\Users\Roy\Desktop\hilillos\" + i + ".txt");
                BloqueInstrucciones bloqueInstrucciones = new BloqueInstrucciones();
                for (int j = 0; j < lines.Length; j++)
                {
                    if (j % 4 == 0 && j != 0)
                    {
                        memoriaInstrucciones.bloqueInstruccioneses[posicionMemoria] = bloqueInstrucciones;
                        posicionMemoria++;
                    }

                    var         line       = lines[j];
                    string[]    lineaSplit = line.Split(' ');
                    int         lineaInt;
                    Instruccion instruccion = new Instruccion();


                    int.TryParse(lineaSplit[0], out lineaInt);
                    instruccion.ins0 = lineaInt;

                    int.TryParse(lineaSplit[1], out lineaInt);
                    instruccion.ins1 = lineaInt;

                    int.TryParse(lineaSplit[2], out lineaInt);
                    instruccion.ins2 = lineaInt;

                    int.TryParse(lineaSplit[3], out lineaInt);
                    instruccion.ins3 = lineaInt;

                    bloqueInstrucciones.instrucciones[j % 4] = instruccion;
                }
            }
        }
示例#3
0
        public void IF()
        {
            BloqueInstrucciones bloqueInstrucciones = cacheInstrucciones.BuscarInstruccion(pc);

            Instruccion irTemporal;

            /*Si hay fallo de cache*/
            if (bloqueInstrucciones == null)
            {
                bloqueInstrucciones = memoriaInstrucciones.BuscarInstruccion(pc);
                cacheInstrucciones.IngresarBloqueInstrucciones(bloqueInstrucciones, pc / 16);
            }

            /*No hay fallo de cache*/
            else
            {
                pc += 4;
            }
            //todo
            //cuando quiero bloquear el area compartida
            //mut_if_id.WaitOne();
            //cuando quiero librar el area compartida
            //mut_if_id.ReleaseMutex();
        }