Diferencia entre revisiones de «Camino de datos para instrucciones de formato R»
(Página creada con « En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los...») |
|||
Línea 1: | Línea 1: | ||
− | |||
− | |||
En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los operandos- del banco de registros del procesador, para ello el banco de registros recibe como entrada los números de los registros (5 bits). La lectura se realiza en cada flanco de reloj. También recibe como entrada el número del registro donde se realizará la escritura (32 bits). La salida del banco de registros corresponde a los datos leídos de los registros, estos serán las entradas de la ALU (32 bits) que realiza una operación con ellos y dirige el resultado (32 bits) a la entrada de datos del banco de registros para guardarlo. | En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los operandos- del banco de registros del procesador, para ello el banco de registros recibe como entrada los números de los registros (5 bits). La lectura se realiza en cada flanco de reloj. También recibe como entrada el número del registro donde se realizará la escritura (32 bits). La salida del banco de registros corresponde a los datos leídos de los registros, estos serán las entradas de la ALU (32 bits) que realiza una operación con ellos y dirige el resultado (32 bits) a la entrada de datos del banco de registros para guardarlo. | ||
− | |||
− | |||
Algunas instrucciones que forman parte de este grupo son: | Algunas instrucciones que forman parte de este grupo son: | ||
− | * Suma y resta de enteros: para add y sub, en caso de overflow el resultado no se guarda en el registro destino, en cambio addu y subu ignoran el overflow. | + | * [[Instrucciones aritméticas, lógicas y de salto incondicional en el Mips#Instrucciones Aritméticas|Suma y resta de enteros]]: para add y sub, en caso de overflow el resultado no se guarda en el registro destino, en cambio addu y subu ignoran el overflow. |
− | * Operaciones de lógica binaria. | + | * [[Instrucciones aritméticas, lógicas y de salto incondicional en el Mips#Instrucciones Lógicas|Operaciones de lógica binaria.]] |
− | * Multiplicación y división entera. Con signo se tienen las instrucciones mult y div, sin signo multu y divu. El resultado de la multiplicación es de 64 bits divididos en 32 bits de bajo orden (LO) y 32 bits de orden alto (HI). En la división el cociente se guarda en los 32 bits LO y el residuo en los HI; y si el divisor es 0 entonces el resultado es impredecible. | + | * Multiplicación y división entera. Con signo se tienen las instrucciones mult y div, sin signo multu y divu. El resultado de la multiplicación es de 64 bits divididos en 32 bits de bajo orden (LO) y 32 bits de orden alto (HI). En la división el cociente se guarda en los 32 bits LO y el residuo en los HI; y si el divisor es "0" entonces el resultado es impredecible. |
− | * Operaciones de desplazamiento (shift operation) donde se encuentran las instrucciones sll (también usada para la multiplicación binaria), srl y sra | + | * Operaciones de desplazamiento (''shift operation'') donde se encuentran las instrucciones "sll" (también usada para la multiplicación binaria), "srl" y "sra" si es un desplazamiento en una cantidad constante y los "sllv", "srlv" y "srav" si son en una cantidad variable, en ellas el bit de signo se desplaza desde la izquierda y se usa el registro $sa. "sll" y "srl" son los registros para el desplazamiento lógico a la derecha o izquierda y "sra" para el desplazamiento aritmético a la derecha. "sllv", "srlv" y "srav" son iguales a los mencionados anteriormente pero un registro se utiliza para la cantidad de cambio. |
− | * Las operaciones de movimiento de | + | * Las operaciones de movimiento de dato que se tienen en este tipo son: LO→rd (mflo rd), HI→rd (mfhi rd), LO→rs (mtlo rs) y HI→ rs(mthi rs). |
Revisión actual del 14:17 8 nov 2013
En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los operandos- del banco de registros del procesador, para ello el banco de registros recibe como entrada los números de los registros (5 bits). La lectura se realiza en cada flanco de reloj. También recibe como entrada el número del registro donde se realizará la escritura (32 bits). La salida del banco de registros corresponde a los datos leídos de los registros, estos serán las entradas de la ALU (32 bits) que realiza una operación con ellos y dirige el resultado (32 bits) a la entrada de datos del banco de registros para guardarlo.
Algunas instrucciones que forman parte de este grupo son:
- Suma y resta de enteros: para add y sub, en caso de overflow el resultado no se guarda en el registro destino, en cambio addu y subu ignoran el overflow.
- Multiplicación y división entera. Con signo se tienen las instrucciones mult y div, sin signo multu y divu. El resultado de la multiplicación es de 64 bits divididos en 32 bits de bajo orden (LO) y 32 bits de orden alto (HI). En la división el cociente se guarda en los 32 bits LO y el residuo en los HI; y si el divisor es "0" entonces el resultado es impredecible.
- Operaciones de desplazamiento (shift operation) donde se encuentran las instrucciones "sll" (también usada para la multiplicación binaria), "srl" y "sra" si es un desplazamiento en una cantidad constante y los "sllv", "srlv" y "srav" si son en una cantidad variable, en ellas el bit de signo se desplaza desde la izquierda y se usa el registro $sa. "sll" y "srl" son los registros para el desplazamiento lógico a la derecha o izquierda y "sra" para el desplazamiento aritmético a la derecha. "sllv", "srlv" y "srav" son iguales a los mencionados anteriormente pero un registro se utiliza para la cantidad de cambio.
- Las operaciones de movimiento de dato que se tienen en este tipo son: LO→rd (mflo rd), HI→rd (mfhi rd), LO→rs (mtlo rs) y HI→ rs(mthi rs).