4. El simulador PIPPIN traduce un programa escrito en el lenguaje
ensamblador PIPPIN y simula su ejecución, mostrando cómo se
ejecuta el programa en la máquina.
6. PIPPIN es un simulador de una computadora simple que respeta la
arquitectura Von Neumann. El simulador es un programa escrito en el
lenguaje de alto nivel JAVA que se ejecuta como un applet en una
página HTML. Pertenece al libro “The Analitical Engine – An
Introduction to Computer Science” de Decker & Hirshfield.
El simulador consta de un espacio de memoria y un conjunto de
componentes que – mínimamente – funcionan como una CPU (UC –
Unidad de Control y UAL – Unidad Aritmético Lógica). A efectos
didácticos, la memoria (RAM) se divide en dos partes. Las direcciones
iniciales (de 0 a 110) permiten almacenar instrucciones de programa y
las finales a los datos (W, X, Y, Z, T1, T2, T3 y T4). Las direcciones de
memoria son de 16 bits. El registro de instrucciones es de 16 bits, por
lo cual la palabra es de 2 bytes.
7. La UC está compuesta por el decodificador capaz de interpretar las
instrucciones y organizar los ciclos de máquina y por un MUX, capaz
de seleccionar la operación a ejecutar en la UAL.
La UAL posee dos registros internos, por eso trabaja utilizando el
registro acumulador ACC. Los valores leídos de la memoria son
puestos en ACC y las operaciones de suma son siempre hechas
teniendo en cuenta el valor disponible en ACC y un valor de
memoria. Posee dos registros internos que no son visibles desde el
exterior.
Complementariamente, existen dos registros más: el Registro de
Instrucciones (IR), donde se almacena el código de la instrucción a
ejecutar (leída de memoria) y el Contador de Programa (PC).
Las líneas que comunican todos los componentes representan los
buses del sistema. Aquí se puede ver que no se encuentran divididos
en buses de direcciones, datos y control sino que se encuentran
todos en uno.
10. Para operar el simulador se requiere de un programa y un conjunto de
datos de entrada. El programa se escribe instrucción por instrucción a
partir de la posición de memoria 0 y los datos de entrada se ingresan en
las posiciones especiales antes descriptas.
El programa se puede ejecutar en modo continuo (Play) o en modo
paso a paso (Step), para visualizar el resultado de cada instrucción
ejecutada. Además, se pueden visualizar datos e instrucciones en
notación binaria (Binary) o en símbolos más inteligibles (Symbolic). Aquí
es interesante observar que la visualización en binario se la puede
corresponder con el lenguaje máquina, donde tanto instrucciones como
datos se encuentran expresadas como códigos numéricos. Por otra
parte, la visualización simbólica corresponde al lenguaje ensamblador
del simulador, el cual resulta más sencillo de interpretar.
Finalmente, el simulador permite almacenar (Save) el estado de la
memoria en un archivo local para su posterior recuperación (Open) y
utilización.