public bool IngresarBloqueInstrucciones(BloqueInstrucciones bloqueInstrucciones, int etiqueta) { this.bloqueInstrucciones[etiqueta % 4] = bloqueInstrucciones; this.etiquetas[etiqueta % 4] = etiqueta; return(true); }
//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; } } }
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(); }