REPORTE DE CÓDIGO FASE 3: INSTRUCCIONES TIPO J - AlexDominguez18/MIPS_32_BITS GitHub Wiki
INSTRUCCIONES TIPO J
Esta tercer fase se centra en las instrucciones de tipo J, es decir, las instrucciones de bifurcación, mejor conocidas como salto, o "Jump" es por esto mismo que se les denomina "Instrucciones de tipo J".
¿Qué es una bifurcación?
Una bifurcación se puede ver como un salto incondicional, es decir, la instrucción obliga a la máquina a seguir siempre el salto. Para distinguir entre saltos condicionales e incondicionales, el nombre MIPS para este tipo de instrucción es jump.
La instrucción de bifurcación jump es de tipo J y su modo de direccionamiento es pseudo- directo.
Muchos lenguajes de programación tienen una sentencia alternativa case o switch, que permite al programador seleccionar entre las alternativas, dependiendo de un único valor.
Una forma de realizar switch es a través de una secuencia de pruebas condicionales, convirtiendo la sentencia switch en una cadena de sentencias if-then-else. Estas alternativas muchas veces son codificadas como una tabla de direcciones, llamada tabla de direcciones de saltos, para que el programa solo necesite acceder a la tabla y luego saltar a la secuencia adecuada.
Para permitir este tipo de funcion, MIPS incluye una instrucción denominada jump register (jr), que significa un salto incondicional a la dirección especificada en el registro.
OBJETIVO
El objetivo de esta fase es lograr implementar los módulos del MIPS necesarios para poder llevar a cabo la ejecución de las instrucciones de Tipo J.
El modelo en el cual nos basaremos para llevar a cabo esta fase es la siguiente imagen:
DESARROLLO
Shift Left 2
Este módulo ya se había agregado anteriormente, que hace un recorrimiento de dos bits a la izquierda, solo que en esta ocasión la entrada es de 26 bits y como salida 28 bits una vez hecho el recorrimiento.
Concatenación
Se concatenó la instrucción [27:0] y el PC + 4 [31_28] dentro del Buffer 2
Mux
Para esta fase también agregamos otro Mux el cuál tiene como señal del control Jump, que este indica si se va a realizar la instrucción J o no
Unidad de Control
Se agregó la instrucción J al Control en donde no importa lo que tenga en las señales, solo el Jump debe 1 para poder realizar esta instrucción.
Pruebas del funcionamiento de la tercera fase:
Una vez realizados los módulos necesarios para llevar a cabo la ejecución de las instrucciones tipo J. Se procedió a verificar que funcionara.
Se realizarán las siguientes 7 operaciones:
- Addi $8, $0, #1337
- J 12
- Addi $8, $8, #-724
- J 18
- Addi $8, $8, #-7
- J 6
- Sw $8, $0,
Se esperan los siguientes resultados:
RESULTADOS OBTENIDOS:
Se obtuvieron los siguientes resultados en la simulación wave
Además de obtener la simulación esperada, se guardó correctamente el valor indicado en la memoria de datos.