Diferencia entre revisiones de «Instrucciones de transferencia de datos en el Mips»

De Wikitronica
Saltar a: navegación, buscar
Línea 80: Línea 80:
 
== Instrucciones Especiales ==
 
== Instrucciones Especiales ==
  
=== El par dual "Linked Load & Store Conditional" ===
+
=== El par dual "Load Linked & Store Conditional" ===
  
  

Revisión del 00:35 8 may 2013

Las instrucciones de transferencia de datos en el MIPS cargan, almacenan y mueven datos entre registros y memoria. Si bien la arquitectura MIPS está orientada al uso de registros, también se debe tener la posibilidad de trabajar con la información almacenada, o por almacenar, en la memoria.

Estos datos recopilados pueden representar direcciones, palabras o simplemente valores constantes. Normalmente, las instrucciones de transferencia de datos se usan para crear estructuras de datos en la memoria, tales como arreglos lineales, matrices y listas que no pueden ser representados usando solo registros. Cabe destacar que las instrucciones de transferencia son las únicas que pueden acceder a la memoria del sistema.

Todas las instrucciones de transferencia de datos usan el formato de instrucción Inmediato:

Format I
Opcode rs rt inmmediate

Este formato es idóneo para las instrucciones de transferencia de datos y cada bloque tiene un significado:

Opcode: Código de la operación que se realizará.

rs: Registro que contiene la posición de memoria a utilizar.

rd: Registro al que se le almacenará la información o que contiene la información por guardar.

inmediate: Una constante usada como “offset” con respecto a la memoria base en rs. Cabe destacar que la constante tiene signo.

Instrucciones De Carga

Cargar el Inmediato Superior (lui)

lui $t1, Const

Coloca el valor de la constante Const de 16bits en los 16bits mas significativos de $t1 y los otros 16bits menos significativos son llenados con ceros. Los nombres de los regitros son solo de referencia, otros pueden ser usados.


Instrucciones De Almacenamiento

Almacenamiento de Media Palabra (sh)

sh $t1, Const($t2)

La instrucción toma los 16bits menos significativos de $t1 y los guarda en la posicion de memoria apuntada por $t2 + la constante opcional agregada (No en $t2 propiamente). Los nombres de los registros son solo de referencia, otros pueden ser usados.

Almacenamiento de un Byte (sb)

sb $t1, Const($t2)

Muy similar a la anterior, salvo que funciona solo con el byte menos significativo y no con 2 bytes. La instrucción toma los 8bits menos significativos de $t1 y los guarda en la posicion de memoria apuntada por $t2 + la constante opciona agregada (No en $t2 propiamente). Los nombres de los registros son solo de referencia, otros pueden ser usados.


Instrucciones Mixtas

Mover desde High (mfhi)

mfhi $t1

Mueve el valor guardado en el registro HIGH (hi) al registro que se le indica $t1. Es particularmente util para extraer información luego de operaciones como multiplicación y división. Los nombres de los regitros son solo de referencia, otros pueden ser usados.


Mover desde Low (mflo)

mflo $t1

Mueve el valor guardado en el registro LOW (lo) al registro que se le indica $t1. Es particularmente util para extraer información luego de operaciones como multiplicación y división. Los nombres de los regitros son solo de referencia, otros pueden ser usados.

Instrucciones Especiales

El par dual "Load Linked & Store Conditional"

Notas

    • Para la transferencia de datos se usa la convención del uso de registros del MIPS, por ende para trabajar la transferencia de datos se suelen usar los registros temporales (t0-t9)
    • Se recuerda que, al trabajar con estructuras de datos, se deben escalar los offsets por el número de bytes del tamaño dado de los datos usados. Ejemplo: cuando se usan estructuras para almacenar Words(4 bytes) se multiplica el offset por 4.