Práctica 2
Duración: Dos sesiones.
Herramientas: Simulador MARS y Ensamblador MIPS. Guión de prácticas y laboratorio.pdf (está todo en el Campus).
Descripción: Durante esas dos sesiones se van a estar haciendo los problemas que hay en el pdf. Son un total de 11, con ejercicios resueltos y descripciones de como hacer bucles o llamadas al sistema. Mis recomendaciones para hacer los problemas son:
a) En algunos ejercicios os pedirán que se muestren por pantalla, además de números, frases, caracteres o espacios en blanco. Para ello, lo mejor es hacer un array de cadena (.asciiz) con lo que que queráis poner, ya sea una coma o un espacio en blanco, y pedir que la muestre en pantalla con la llamada al sistema 4.
b) Para los bucles, hay que tener en cuenta el tamaño de los elementos, ya sean de byte (1), media palabra (2) o palabra (4). Esto es necesario para el índice, ya que dependiendo del tamaño de los elementos, el índice habrá que desplazarlo una, dos o cuatro posiciones. En la mayoría de los problemas no se especifica el tamaño de los elementos, pero es bueno tenerlo en cuenta, sobre todo de cara al examen.
Ejemplo de carga del índice al inicio de un bucle usando desplazamientos:

Palabra
Media Palabra
Byte
c) En caso de que no logréis resolver un problema y tengáis la cabeza a punto de estallar, seguid el protocolo clásico para estos casos: pasar del problema e intentar hacer el siguiente hasta que el profesor vaya con vosotros y os resuelva las dudas o si estas demasiado hechos polvo, esperar un rato hasta que se os aclare la cabeza; algunos problemas pueden costar sacarlos y lo mejor es hacer esto.

c) En caso de que no logréis resolver un problema y tengáis la cabeza a punto de estallar, seguid el protocolo clásico para estos casos: pasar del problema e intentar hacer el siguiente hasta que el profesor vaya con vosotros y os resuelva las dudas o si estas demasiado hechos polvo, esperar un rato hasta que se os aclare la cabeza; algunos problemas pueden costar sacarlos y lo mejor es hacer esto.
Dificultades: Dependiendo de lo bien o mal que se te de el ensamblador, esta práctica puede ser mas o menos sencilla o una autentica pesadilla. Muchos problemas usan bucles, que tienen una estructura fija, por lo que sólo tendrás que repetir esa estructura y cambiar el contenido. En ciertos problemas necesitarás reservar espacio, para ello se usa la directiva .space, en la que el número que hay que poner es el espacio a reservar en bytes. Hay algunos problemas que son más complicados que otros, así que lo mejor es seguir los consejos que he puesto anteriormente e intentarlo una y otra vez. No dudes en probar constantemente el programa que has hecho para ver si funciona como tu quieres y comprobar que instrucción no hace lo que tu quieres que haga. Programar en ensamblador puede ser un rollo pero si lo intentas sin parar tarde o temprano te debería de salir. ¡Ánimo y mucha suerte!
FAQs
¿Cómo puedo almacenar arrays en los registros?
Los arrays deberás almacenarlos en memoria, y para acceder a sus valores deberás guardar la dirección del primer elemento del array en el registro y a través de modificar la dirección con múltiplos de 1, 2 o 4 accederás al resto de los valores del array.
¿En que se basan los códigos hexadecimales que representan las instrucciones?
Existen tres tipos de instrucciones: R, I, J. El tipo de instrucción define su estructura. Para obtener el código hexadecimal, primero deberemos pasar la instrucción a binario y luego a hexadecimal.
¿Qué es una pseudo-instrucción?
Una pseudo-intrucción no es más que una secuencia de intrucciones que representan una sola instrucción simplificando al programador intrucciones que necesitarían varias líneas de código para su implementación.
¿El tamaño de las directivas de datos .word siempre es de 32 bits?
No, depende de la arquitectura y juego de instrucciones del procesador con el que trabajemos. Si usamos un procesador de 32 bits la directiva tendrá un tamaño de 32 bits mientras que en un procesador de 64 bits la palabra ocupará 64 bits.
¿Qué número tengo que poner junto a la directiva .space?
Este número deberá ser la cantidad de memoria que quieres reservar en bytes, es decir, que quieres almacenar 4 valores de tamaño byte, deberás poner 4, si son de media palabra 8 y si son de palabra 16.
No hay comentarios:
Publicar un comentario