MANUAL DE USUARIO DEL SIMULADOR DE SIMPLEZ

Notas:

1. PRESENTACIÓN

La ventana principal del simulador y desde la cual se puede acceder a toda su funcionalidad se muestra en la imagen.



De arriba a abajo se pueden ver los siguientes campos:

Barra de Menús

Contiene tres menús desplegables:

Barras de Control

Hay dos barras desde las que podemos controlar la simulación y seleccionar otros módulos (ruta de datos, cronogramas y pantalla y teclado). Estas barras de control se pueden desglosar del resto de la ventana pinchando en la zona punteada de las mismas y arrastrándolas fuera. Para devolverlas a su sitio basta con arrastrarlas de nuevo a donde estaban o cerrar las ventanas que las contienen. Esta posibilidad de desglose resulta especialmente útil cuando se trabaja con las ventanas de la Ruta de Datos o la de Cronogramas, porque permite gestionar la ejecución del programa sin necesidad de tener la ventana principal abierta.
 

Área de Información de la simulación

Contiene información sobre el estado de ejecución de la máquina, y da la posibilidad de modificarlo. Se compone de los siguientes campos:

Área de Monitorización

Tiene dos solapas. La correspondiente a Mensajes de Simplez mostrará mensajes relacionados con la ejecución, que sobre todo tendrá sentido para la Ruta de Datos. En la solapa de mensajes de error se mostrarán los motivos de operaciones fallidas de edición, carga de ficheros, etc., como parte complementaria a los diálogos modales.

 

2. INTRODUCCIÓN DE UN PROGRAMA

Tenemos varias formas de introducir un programa en memoria. La más potente es la utilización del Editor de Programas (desarrollado porFrancisco Javier Rodríguez) accesible a través del menú Herramientas, en la Barra de Menús. Este editor genera un fichero de extensión .lns, el cual se puede cargar en memoria con la opción "Abrir fichero de código" del menú Archivo.

Otra posibilidad es cargar un volcado de memoria de un fichero con extensión .vms utilizando la entrada "Cargar Memoria desde Fichero" del menú de Archivo, o pulsar la secuencia CONTROL M. Esta opción como las restantes de este menu se explican más adelante en un apartado dedicado al menú de Archivo.

Una tercera forma de introducir un programa es a través de las tablas de Memoria. El inconveniente de este método es que necesitamos conocer desde el principio la disposición que tendrá la memoria. La ventaja es que se trata de una manera muy sencilla e intuitiva de introducir los datos. Supongamos que queremos introducir el ejemplo de la página 59 del libro del curso que suma el contenido de las posiciones de memoria 10 y 11 y lo almacena en la posición 12:

Dirección MP

Contenido

Contenido

Comentarios

(decimal)

(octal)

(nemónico)


-----------

---------

----------

-------------------

[0]

1012

LD /10

; carga el primer número

[1]

2013

ADD /11

; le suma el segundo

[2]

0014

ST /12

; almacena el resultado

[3]

7000

HALT


Como muestra la figura pinchando con el ratón una determinada posición de memoria podemos editar su contenido. Únicamente hay que tener en cuenta el formato de la columna en cuestión.
 


 

Supongamos que para introducir la primera instrucción utilizamos el formato octal. Entonces pincharíamos en la primera celda de la columna "Contenido" de la tabla de Programa. Una vez introducido el valor 1012 podemos pinchar con el ratón fuera para desactivar la edición, o pulsar Enter con lo que pasaríamos a editar la siguiente posición de memoria. Si el formato del número introducido es incorrecto, aparecerá un diálogo modal avisando de este hecho y se recuperará el valor que originariamente contenía dicha posición.

Para introdudir la siguiente instrucción utilizaremos el código nemónico. Para lo que pinchamos con el ratón en la celda correspondiente de la columna "Instrucción" de la tabla de Programa e introducimos la cadena "add /11" y pulsamos Enter. Las instrucciones se pueden introducir tanto en mayúscula como en minúsculas, pero el formato debe ser el explicado en el libro del curso.

Para las dos siguientes instrucciones podemos seguir cualquiera de los dos métodos anteriores.

Por último para introducir los datos a sumar en las posiciones [10] y [11] podemos hacerlo a través de la tabla de Memoria utilizando el formato decimal. Supongamos que los valores a sumar son el 3 y el 8, así que pulsaríamos respectivamente en las posiciones de memoria [10] y [11] de la columna "Contenido" de la Tabla de Memoria.

Como se habrá podido observar al introducir valores en una celda determinada. las celdas homólogas de las columnas de ambas tablas cambian también su contenido adecuándolo al nuevo valor introducido. El contenido final de la memoria sería el siguiente:
 



 

Vemos que las posiciones [10] y [11] de la columna "Instrucción" de la tabla de Programa contienen los valores "ST /3" y "ST/8", que son los códigos nemónicos que se corresponderían con los valores que contienen dichas posiciones. Esto es debido a que esta columna siempre interpreta el contenido de la memoria como instrucciones de Simplez. Por tanto hay que tener claro qué zonas de memoria contienen datos y cuáles código. De hecho una posición de memoria puede ser tanto uno como otro según se acceda a ella. Si el sistema accede a ella buscando la siguiente instrucción a ejecutar no hay duda que se trata de código, y si en cambio lo hace porque su contenido se va a sumar con otro operando estamos hablando de datos.

La edición sólo es posible si no estamos en ejecución.

 

3. EJECUCIÓN DE UN PROGRAMA

Una vez cargado un programa en memoria podemos comenzar con su simulación. Lo primero de todo es seleccionar un modo de ejecución. Pinchando en el desplegable de la barra de herramientas podemos ver que los tres modos de ejecución disponibles son:

En el último modo si detenemos la ejecución y luego la reanudamos, volverán a contarse de cero las instrucciones ejecutadas hasta ese momento.

Los botones que controlan la ejecución del programa muestran los símbolos utilizados en los aparatos de audio: el rectangular detiene la ejecución, la flecha a la derecha la inicia, y la doble flecha a la izquierda deshace la ejecución de la última instrucción.

El resultado final de ejecutar el programa de ejemplo expuesto en el punto anterior sería el indicado en la figura:
 



 

Lo único a resaltar es que el área que muestra el número de instrucciones ejecutadas hasta el momento contiene un cero ya que la última instrucción ha sido HALT.



4. ENSAMBLADOR DE SÍMPLEZ

Los programas para Símplez se escriben normalmente en lenguaje ensamblador. Pero para que Símplez pueda ejecutarlos, tienen que ser traducidos a binario (cfr. tema 3 del libro). Esto se hace con el ensamblador de Símplez:
 



 

El ensamblador incluye un área de edición donde se escriben los programas y otra donde aparecerán mensajes o resultados de las acciones que se soliciten. El tamaño de estas dos zonas se puede cambiar en cualquier momento.

Las acciones en el ensamblador se hacen a través de los botones de la barra de herramientas:
 



 

Los ficheros de texto que se escriben con el editor tienen que llevar la extensión ".sim".

Lo primero que hay que hacer una vez que se ha escrito el programa es ensamblarlo. Al hacer esto se generan dos ficheros con el mismo nombre que el fichero que se ha escrito con el editor pero con distinta extensión. Uno es un fichero de texto donde se añade a lo escrito la traducción a octal del programa y las posiciones de memoria que va a ocupar cada instrucción o seudoinstrucción; con extensión "ens". El otro es el fichero objeto, con una estructura muy parecida a la descrita en el tema 7 del libro para Algorítmez; es binario y tiene extensión ".obs". Si el programa tiene algún error, el ensamblador lo indicará en la zona de mensajes y no se generarán los ficheros.

Una vez ensamblado el programa hay que montarlo, generando un fichero ".lns" que es lo que se puede cargar en la memoria de Símplez con el simulador.


APÉNDICES

A1. REQUISITOS PREVIOS

Como requisito previo a la instalación y utilización del simulador es necesario tener el JDK 1.3, que se puede descargar de http://java.sun.com/j2se/1.3/ (esto puede llevar bastante tiempo: ocupa más de 40 MB la versión para Windows y más de 20 MB la versión para Linux) y se instala muy fácilmente siguiendo las instrucciones de esas páginas (Windows o Linux).

Una vez instalado el JDK tendremos un directorio:

c:\jdk1.3.1_02\bin\

en el caso de Windows, o:

/usr/local/jdk1.3.1_02/bin/

en el caso de Unix/Linux (suponiendo que el binario descargado se ha ejecutado desde /usr/local/).

Las órdenes que necesitamos (jar y java) deberán ir precedidas de esos nombres de directorios, o bien los nombres pueden añadirse a la variable de entorno PATH

(Nota: La versión 1.4 está ya disponible).

 

A2. INSTALACIÓN

Todos los ficheros que forman el simulador, incluidas las imágenes, están empaquetados en un solo archivo, simulador.jar. Lo primero que hay que hacer es desempaquetar las imágenes con:

jar xvf simulador.jar Imagenes

Tras esto tendremos el fichero simulador.jar y el directorio Imagenes, ambos necesarios.

Para arrancar el simulador ejecutaremos:

java -jar simulador.jar