lunes, 6 de mayo de 2013

Práctica 1: Ensamblador




Práctica 1

Duración: Una sesión.

Herramientas: Simulador MARS (necesita java para funcionar), Práctica de introducción al MARS.pdf, Fibonacci.asm. (Todo esto se puede encontrar en el Campus Virtual).

Descripción:

 En esta práctica se aprende a usar el MARS. Lo único que hay que hacer es seguir lo que dice el documento en formato .pdf de la práctica. Al finalizar el primer contacto con el lenguaje de ensamblador nos pusimos a realizar una serie de ejercicios (en concreto 11), en los que se nos exigía distintos objetivos. Conforme íbamos haciendo ejercicios la dificultad de estos se veía incrementada (Ver practica 2).

Ejemplo de familiarización con el entorno MARS:
Este programa ( Fibonacci.asm) calcula la secuencia de números de Fibonacci (Código Da Vinci), de la que se obtiene el número Phi (número áureo):1.61803399.

Nos centraremos en la modificación del contenido de la memoria. (La modificación de un valor de registro es exactamente igual.) Realicemos el siguiente ejemplo:

• Establezca un punto de interrupción (Breakpoint) en la primera  instrucción de la subrutina que imprime los resultados. Utilice la casilla de verificación a la izquierda de la instrucción cuya dirección es 0x00400058


 • Restablecer y volver a ejecutarel programa, que se detiene en el punto de interrupción. 


• Haga doble clic en una de las posiciones de memoria que contiene los números de Fibonacci computada. La celda se resaltará y aceptará la entrada de datos por medio del teclado, similar a una hoja de cálculo.
Introduzca un valor sensiblemente diferente, y pulse la tecla Intro o hacer clic fuera de la celda para indicar que el cambio se haya completado. Por ejemplo: la dirección de memoria 0x10010020 actualmente contiene datos 0x00000022 = 34.

• Borre la ventara RUN I/O con el botón Clear

• Haga clic en  para continuar desde el punto de interrupción. La salida del programa incluye el valor de su entrada en lugar del número calculado de Fibonacci.

En el siguiente vídeo podréis ver los pasos uno a uno:







Una vez expuesta la primera práctica y haber hecho un breve resumen/introducción aquí resumiré lo que creo que es más importante con respecto al uso del MARS:   


a) Para cualquier duda con respecto a comandos del programa, lo mejor es mirar la ayuda que se mira pulsando F1 o el icono de la parte superior ‘’‘’. En ella vienen todas las instrucciones del MARS, la explicación de lo que hacen y como hay que escribir el comando. También en la ayuda se puede encontrar todos los tipos de llamadas al sistema (syscall). La ayuda está en inglés, pero son palabras simples de no mucha dificultad y no creo que den lugar a problemas poniendo las que no sepáis en un traductor.

b) Para ver que es lo que hace un programa y lo que hacen cada una de las instrucciones lo mejor es ir pasándolas una a una pulsando el botón una vez que el programa ha sido ensamblado. De esta manera se puede ver paso a paso como funciona el programa y las instrucciones. También es la mejor manera de ver donde falla el programa para poder corregir los errores.

c) Si tras mucho pensar no lográis o no sois capaces de resolver un problema o hacer un ejercicio, no dudes en avasallar a preguntas al profesor. Os contestará cualquier duda que tengáis y os ayudará a resolver vuestros problemas (al menos, así era el nuestro y nos decía reiteradamente que le preguntáramos las dudas, supongo que debería ser lo mismo para los demás).

d) Seguro que lo habréis escuchado antes, realizad comentarios de cada paso que realice el programa, la programación es un lenguaje prácticamente simbólico, por lo que realizar correcciones cuando el programa falla es más complicado que en otros lenguajes de alto nivel.

Dificultades:

Lo más complicado de esta práctica es el último apartado, en el que hay que modificar el programa Fibonacci para que haga la suma con tres números en vez de con dos.
Aunque pueda parecer a primera vista algo complicado, no lo es tanto. Lo mejor que se puede hacer es mirar poco a poco que es lo que hace el programa para sumar dos números. De hecho, tan sólo hay que añadir dos o tres instrucciones para que use un tercer registro para guardar el número extra y añadir otra suma, ya que el MARS sólo puede sumar dos números.

FAQS

¿Qué es ensamblador?
Es un lenguaje de programación ''entendible'' que interpretan instrucciones máquinas.

¿Para qué sirve ensamblador?
Ayuda al desarrollo de lenguajes de más alto nivel facilitando la creación de nuevos programas. Todo lenguaje es convertido a ensamblador antes de ser procesado por el procesador, finalmente será convertido a código máquina. También es usado como lenguaje de programación para componentes de diseño sencillo como pueden ser procesadores para electrodomésticos o bien para aplicaciones que requieren un alto nivel de optimización.

No conozco ningún lenguaje de programación, ¿me recomiendas empezar por ensamblador?
Es recomendable iniciarse en la programación con algún lenguaje de alto nivel que facilite el aprendizaje y una vez comprendido su funcionamiento y lógica, adentrarse a niveles más bajos.


¿Dónde puedo encontrar documentación para el ensamblador MIPS?
Si usas el programa simulador MARS dispondrás de una ayuda muy completa desde el menú "Help" donde se detallan instrucciones básicas, pseudoinstrucciones, directivas, llamadas al sistema y exepciones, todo lo necesario para comenzar.

¿Puedo programar ensamblador MIPS para cualquier máquina?
El ensamblador para MIPS visto en clase es específico para máquinas que usan el
MIPS R3000. Este modelo cuenta con un juego de instrucciones que es el que empleamos para programar y podremos trasladar a cualquier máquina que contenga dicho juego de instrucciones sin importar otros aspectos.

¿Donde se almacenan los datos con los que trabaja los programas en ensamblador?
Principalmente en registros del procesador para además así aumentar su velocidad de ejecución aunque también se hace uso de la memoria principal.

¿Debería comentar mis programas?
Siempre es recomendable hacer los programas lo más claro y simples posibles para que otro programador pueda seguir con nuestro trabajo además nos ayudará para reconocer más rápidamente nuestro propio trabajo en un futuro. Los comentarios pueden ayudar a aclarar algoritmos complejos.

¿Siempre es necesario usar la directiva .globl?
No, solo es necesario usarlo cuando nuestro programa necesita comunicarse con otro programa. Un ejemplo sería un programa que reciba un dato por parámetro de forma externa.

No hay comentarios:

Publicar un comentario