pub:dglab_mars

Mars es un programa muy util para simular la ejecución de código MIPS en un ordenador de propósito general, y observar el comportamiento del código ensamblador sin necesidad de descargar el software a un procesador real. Entre sus características, se encarga la de poder simular instrucción a instrucción, ver los valores de los registros internos del procesador en cada instante y ensamblar el código ensamblador en código máquina, listo para ser embebido en el procesador MIPS real.

Para ejecutar el programa, debe accederse desde la terminal a la siguiente ruta:

/opt/Mars

Y ejecutar el programa mediante Java, indicando el ejecutable .jar objetivo.

java -jar Mars.jar

Su funcionamiento es muy simple. Se debe escribir el código ensamblador del programa a simular en la ventana principal del programa. A la derecha de la ventana podemos ver los valores de cada uno de los registros del procesador, así como de los microprocesadores de control (Coproc 0) y punto flotante (Coproc 1).

El código ensamblador debe seguir el estándar que se muestra en la ayuda, donde se puede observar el formato de las instrucciones y las instrucciones disponibles (básicas, pseudoinstrucciones, directivas y llamadas al sistema). La siguiente imagen muestra la ventana de ayuda donde se puede ver tal información.

Una vez se tiene el código desarrollado, como puede ser el ejemplo de la Serie de Fibonacci que se encuentra en el mismo directorio del programa, se puede ensamblar y obtener las direcciones de memoria de cada sección (.data, .text…) y los contenidos de estas direcciones de memoria. Posteriormente, se podrá ejecutar paso a paso el programa, viendo como se modifican los valores de los registros en cada instante.

La siguiente imagen muestra el código ensamblado en ejecución del ejemplo de la serie de Fibonacci, en la que cada número es la suma de los dos precedentes en la serie.

Podemos observar tanto la sección de texto, en la que se encuentran dispuestas las instrucciones que se desarrollaron en ensamblador y las pseudoinstrucciones, que se han desarrollado en varias instrucciones simples en lenguaje ensamblador. Por otro lado, en la sección de datos se encuentran aquellos datos dispuestos según la directiva de asignación a secciones de datos.

Por último, observamos que se puede personalizar la velocidad a la que se ejecutan las instrucciones, desde máxima velocidad (sin interacción) hasta 0.05 instrucciones por segundo, que permite observar exactamente y con detalle todos los cambios en los registros y la memoria de datos.

  • pub/dglab_mars.txt
  • Última modificación: 2020/09/28 11:44
  • (editor externo)