Beispiel #1
0
        /// <summary>
        /// Metodo que ejecuta la instruccion de Sw
        /// </summary>
        /// <param name="palabra">Instruccion de la cual se extraen los parametros necesarios</param>
        private void Sw(Instruccion i)
        {
            int y = i.GetParametro(1), x = i.GetParametro(2), n = i.GetParametro(3);

            controlador.CachesDatos[id].Escribir(n + registros[y], registros[x]);
            Debug.WriteLine("Procesador " + id + ": SW MEM(" + n + " + R" + y + ") = R" + x);
            Debug.WriteLine("Procesador " + id + ": SW MEM(" + (n + registros[y]) + ") = " + registros[x]);
        }
Beispiel #2
0
        /// <summary>
        /// Metodo que ejecuta la instruccion de Dsub
        /// </summary>
        /// <param name="palabra">Instruccion de la cual se extraen los parametros necesarios</param>
        private void Dsub(Instruccion i)
        {
            int y = i.GetParametro(1), z = i.GetParametro(2), x = i.GetParametro(3);

            Debug.WriteLine("Procesador " + id + ": DSUB R" + x + " = R" + y + " - R" + z);
            Debug.WriteLine("Procesador " + id + ": DSUB R" + x + " = " + registros[y] + " - " + registros[z]);
            registros[x]    = registros[y] - registros[z];
            this.Modificado = true; // Indica que hubo un cambio en un registro
            Debug.WriteLine("Procesador " + id + ": DSUB R" + x + " = " + registros[x]);
        }
Beispiel #3
0
        /// <summary>
        /// Metodo que ejecuta la instruccion de Lw
        /// </summary>
        /// <param name="palabra">Instruccion de la cual se extraen los parametros necesarios</param
        private void Lw(Instruccion i)
        {
            int y = i.GetParametro(1), x = i.GetParametro(2), n = i.GetParametro(3);

            registros[x]    = controlador.CachesDatos[id].Leer(n + registros[y]);
            this.Modificado = true; // Indica que hubo un cambio en un registro
            Debug.WriteLine("Procesador " + id + ": LW R" + x + " = MEM(" + n + " + R" + y + ")");
            Debug.WriteLine("Procesador " + id + ": LW R" + x + " = MEM(" + (n + registros[y]) + ")");
            Debug.WriteLine("Procesador " + id + ": LW R" + x + " = " + registros[x]);
        }
Beispiel #4
0
        /// <summary>
        /// Metodo que ejecuta la instruccion de Daddi
        /// </summary>
        /// <param name="palabra">Instruccion de la cual se extraen los parametros necesarios</param>
        private void Daddi(Instruccion i)
        {
            int y = i.GetParametro(1), x = i.GetParametro(2), n = i.GetParametro(3);

            Debug.WriteLine("Procesador " + id + ": DADDI R" + x + " = R" + y + " + " + n);
            Debug.WriteLine("Procesador " + id + ": DADDI R" + x + " = " + registros[y] + " + " + n);
            registros[x]    = registros[y] + n;
            this.Modificado = true; // Indica que hubo un cambio en un registro
            Debug.WriteLine("Procesador " + id + ": DADDI R" + x + " = " + registros[x]);
        }
Beispiel #5
0
        /// <summary>
        /// Metodo que ejecuta la instruccion de Bnez
        /// </summary>
        /// <param name="palabra">Instruccion de la cual se extraen los parametros necesarios</param>
        private void Bnez(Instruccion i)
        {
            int x = i.GetParametro(1), n = i.GetParametro(3);

            if (registros[x] != 0)
            {
                programCounter = (programCounter + 4) + n * 4;
                Debug.WriteLine("Procesador " + id + ": BNEZ Salto a " + programCounter);
                programCounter -= 4;
            }
            else
            {
                Debug.WriteLine("Procesador " + id + ": BNEZ No salto");
            }
            // Despues el metodo que llama a este aumenta en 4 el pc
        }