Please enable JavaScript.
Coggle requires JavaScript to display documents.
Operaciones del hardware del computador - Coggle Diagram
Operaciones del hardware del computador
Cálculos aritméticos
El computador debe ser capaz de realizar operaciones básicas como la suma, utilizando una notación específica en lenguaje ensamblador, por ejemplo, add a, b, c.
Notación MIPS:
Un lenguaje ensamblador en el que cada instrucción realiza una operación con exactamente tres operandos.
Instrucciones: El lenguaje del computador
Instrucciones MIPS:
Son rígidas y realizan una única operación con un número fijo de operandos.
Comentarios en MIPS:
Son utilizados para explicar las instrucciones, pero son ignorados por el computador.
Operandos MIPS
Registros:
MIPS utiliza registros como $s0, $t0, $zero, etc., para almacenar datos temporalmente y realizar operaciones aritméticas.
Memoria:
Accesible únicamente a través de instrucciones de transferencia de datos, con direcciones de palabras consecutivas que difieren en 4 bytes.
Lenguaje ensamblador MIPS
Aritmética:
Instrucciones como add, sub, addi para operaciones de suma, resta y suma con constantes.
Transferencia de datos:
Instrucciones como lw, sw para cargar y almacenar palabras, medias palabras o bytes entre la memoria y los registros.
Lógica:
Instrucciones como and, or, nor para operaciones bit a bit.
Saltos condicionales:
beq, bne para bifurcar en función de comparaciones.
Saltos incondicionales:
j, jr, jal para saltar a direcciones específicas o llamar procedimientos.
Principios de diseño de hardware
Simplicidad favorece la regularidad
Tener un número fijo de operandos simplifica el diseño del hardware.
Cuanto más pequeño, más rápido:
Un número limitado de registros (32 en MIPS) optimiza la velocidad de procesamiento.
Operandos del hardware del computador
Registros
Son visibles tanto para el programador como para el diseño del hardware, y en MIPS tienen un tamaño de 32 bits (una palabra).
Limitación en el número de registros:
Debido a la velocidad y la simplicidad, MIPS utiliza un número limitado de registros.
Compilación de sentencias C a MIPS
Compilador:
Traduce código C a instrucciones MIPS asignando variables a registros y generando instrucciones como add, sub con operandos de registros o temporales.
Operandos en memoria
Memoria:
Almacena grandes cantidades de datos, como estructuras y tablas, que no caben en los registros.
Instrucciones de transferencia de datos:
Son necesarias para mover datos entre la memoria y los registros, utilizando direcciones de memoria e índices.
Instrucciones para la toma de decisiones:
Estas instrucciones son lo que distingue a un computador de una calculadora simple, ya que permiten al sistema tomar decisiones basadas en los datos de entrada y los valores calculados. En los lenguajes de programación, las decisiones se representan con sentencias como if (si condicional), a veces combinadas con goto (ir a) y etiquetas. En el lenguaje ensamblador MIPS, las instrucciones que implementan decisiones son bifurcaciones condicionales.
Instrucción beq (branch if equal):
nstrucción en MIPS que realiza un salto a una etiqueta si dos registros tienen valores iguales. El formato es: beq registro1, registro2, L1, donde L1 es la etiqueta de destino si los valores en registro1 y registro2 son iguales.
Instrucción bne (branch if not equal):
Instrucción en MIPS que realiza un salto a una etiqueta si dos registros tienen valores diferentes. El formato es: bne registro1, registro2, L1, donde L1 es la etiqueta de destino si los valores en registro1 y registro2 son diferentes.
Saltos incondicionales:
A diferencia de las bifurcaciones condicionales (beq, bne), un salto incondicional es una instrucción que siempre se ejecuta, sin importar ninguna condición. En MIPS, se utiliza la instrucción j (jump), que realiza un salto directo a una etiqueta específica.
Compilación de la sentencia if-then-else en MIPS:
La sentencia if en C se traduce en ensamblador utilizando bifurcaciones condicionales. Por ejemplo, si i == j, el código usa beq o bne para decidir entre dos alternativas. Las operaciones dentro de las ramas (then/else) se traducen a instrucciones aritméticas como add o sub, dependiendo de las acciones requeridas.
Lazos (loops):
Los lazos permiten la repetición de instrucciones. Un ejemplo clásico en C es el lazo while, que se compila en MIPS mediante el uso de bifurcaciones y saltos, con etiquetas que permiten regresar al inicio del lazo hasta que se cumpla la condición de salida.
Instrucción slt (set on less than):
Esta instrucción en MIPS compara dos registros. Si el valor en el primer registro es menor que el del segundo, el tercer registro se establece en 1; de lo contrario, se establece en 0.
Salto a registro (jump register o jr):
Instrucción MIPS que realiza un salto a la dirección almacenada en un registro. Esta instrucción es útil en la implementación de sentencias switch o case en C, permitiendo que el programa salte a diferentes secciones del código según el valor de una variable.
Bloque básico:
Un bloque básico es una secuencia de instrucciones sin bifurcaciones (excepto al final) y sin destinos de saltos o etiquetas (excepto al principio). Dividir un programa en bloques básicos es una etapa importante en la compilación.
Operadores lógicos en C (&, &&, |, ||):
En C, & y | son operadores lógicos que se utilizan para operaciones bit a bit, mientras que && y || se usan para bifurcaciones condicionales. En MIPS, no hay una diferenciación similar en las instrucciones ensamblador, lo que simplifica su implementación.