viernes, 18 de mayo de 2012

Ensamblador

En esta práctica aprendimos el uso de ensamblador. Comenzamos con una guía para la introducción al IDE MARS, el cuál sirve además para simular el código, y conceptos básicos del ensamblador para procesadores MIPS.
En nuestro primer programa vimos como desarrollar la serie de Fibonacci, la cuál consiste en una secuencia de números en el que el siguiente número es la suma de los dos anteriores comenzando siempre por 1 los dos primeros casos.

Cuando observamos el programa y vimos para que servía cada instrucción, se planteó la idea de que el programa calculase la suma de los tres anteriores números. Cambiando ligeramente algunas instrucciones dimos con la tecla.


Al finalizar el primer contacto con el lenguaje ensamblador, nos pusimos a realizar una serie de ejercicios, concretamente 11, en los que se nos exigía distintos objetivos y a la vez que se avanzaba de ejercicio, la dificultad iba aumentando, en los que se incluían la utilización de bucles if, if-else, for, etc con su forma en ensamlador. Veamos un ejemplo de unos de ellos:

En este ejercicio se planteaba mostrar por pantalla la suma de dos números, la suma del 100 y del -10, y reservar un espacio donde almacenar el resultado de dicha suma. Cargamos en los registros $t0 y $t1 los número 100 y -10 respectivamente. La suma de ambos números la guardamos en el mismo registro $t0 y realizamos una llamada al sistema con la instrucción syscall para que mostrara el resultado por pantalla. Finalmente cargábamos el resultado de la suma en la variable resultado.




Y esto es un resumen de lo visto en la prácticas de ensamblador.



FAQ

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

¿Para que 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.

¿Qué es MARS?
Es un IDE (Interactive Development Environment) que permite la creación y simulación de código ensamblador para porcesadores MIPS.

¿Donde 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, pseudo-instrucciones, directivas, llamadas al sistema y exepciones, todo lo necesario para comenzar. En internet también se puede encontrar gran cantidad de documentación.

¿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.

¿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 la 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. Este tamaño es el ofrecido por los registros ubicados en el procesador.
Descargar memoria en formato PDF

4 comentarios:

  1. Buen trabajo chicos, muy completo y detallado, los encargados de revisarlo le echarán un vistazo por si se os escapa algo.

    ResponderEliminar
  2. Muy bien el trabajo ha quedado muy bien y con el pdf hay perfecto.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Buenas, el trabajo ha quedado muy bien y no veo nada que sea necesario mejorar.En todo caso lo unico mejorable seria la calidad de las capturas de pantalla del MARS ya que el resto lo veo perfecto.

    ResponderEliminar