Instrucciones JUMP y BRANCH
Las instrucciones JUMP y BRANCH hacen referencia a los saltos incondicionados y condicionados respectivamente en la implementación MIPS.
A continuación se detalla su estructura.
Código de operación: 2
Condición: ¿El valor almacenado en registro rs ES IGUAL al valor almacenado en registro rt?
Photo by Markus Spiske on Unsplash
Instrucción JUMP
Es una operación de salto sin condición.
Su formato es de tipo J, definido en las estructuras básicas de instrucciones MIPS. Debido a esto, se compone de dos partes: Código de operación y Dirección.
El salto se realiza siempre a la dirección especificada por la instrucción.
La dirección corresponde a la dirección física de la Memoria de Instrucciones a la cual se debe realizar el salto.
Ejemplo:
Es un salto incondicional (JUMP) a la dirección 3 de la Memoria de Instrucciones.
Instrucción BRANCH
Es una instrucción de salto con condición. Se realiza el salto únicamente si la condición establecida se cumple.Su formato es de tipo I, definido en las estructuras básicas de instrucciones MIPS. Debido a esto, se compone de 4 partes: Código de operación, rs, rt y Constante o Dirección.
Para evaluar la condición se compara el valor del registro rs contra el valor del registro rt.
Si la condición se cumple, entonces el valor de PC se debe actualizar a de la siguiente posición más el BranchAddr de la instrucción.
PC = Siguiente posición + BranchAddr
Existen dos tipos de instrucción BRANCH.
rs: Numero del primer registro a comparar (5 bits)
rt: Numero del segundo registro a comparar (5 bits)
Branch Equals
Código de operación: 4rs: Numero del primer registro a comparar (5 bits)
rt: Numero del segundo registro a comparar (5 bits)
Constante o dirección: Valor a sumar.
Condición: ¿El valor almacenado en registro rs ES IGUAL al valor almacenado en registro rt?
Branch NOT Equals
Código de operación: 5
rs: Numero del primer registro a comparar (5 bits)
rt: Numero del segundo registro a comparar (5 bits)
Constante o dirección: Valor a sumar.
Condición: ¿El valor almacenado en registro rs NO ES IGUAL al valor almacenado en registro rt?
Ejemplo BRANCH
Es una instrucción Branch Equals para saltar a la siguiente dirección en memoria + 4 si se cumple la condición que el contenido del registro 1 sea igual al contenido del registro 2.
Conclusión
En este artículo vimos las estructuras de las instrucciones JUMP y BRANCH. Los códigos de operación de cada una, funciones y ejemplos de uso.
Igualmente, mostramos su importancia para el procesador ya que controlan el flujo de ejecución mediante los saltos condicionados y no condicionados.
En el siguiente Post vamos a implementar estas instrucciones al procesador que estamos construyendo.