CPU Sim es un entorno de desarrollo de software para la simulación de computadoras simples. Fue desarrollado por Dale Skrien para ayudar a los estudiantes a comprender las arquitecturas de las computadoras . Con esta aplicación, el usuario puede simular CPU simples nuevas o existentes. Los usuarios pueden crear nuevas CPU virtuales con instrucciones de lenguaje de máquina personalizadas , que se implementan mediante una secuencia de microinstrucciones. CPU Sim permite al usuario editar y ejecutar programas en lenguaje ensamblador para la CPU que se está simulando.
CPU Sim se ha programado con el paquete Java Swing , lo que significa que es independiente de la plataforma (se ejecuta en todas las plataformas que tengan una máquina virtual Java instalada).
Un sistema informático de muestra, el Wombat 1, está equipado con CPU Sim . Tiene los siguientes registros:
El lenguaje ensamblador del ordenador Wombat 1 consta de 12 instrucciones. Cada instrucción se almacena en 16 bits; los primeros 4 son el código de operación y los otros 12 son el campo de dirección.
CPU Sim tiene las siguientes características:
Este programa lee números enteros hasta que se lee un número entero negativo. Luego, genera la suma de todos los números enteros positivos.
Inicio: leer // leer n -> accjmpn Hecho // saltar a Hecho si acc < 0.agregar suma // agregar suma a la cuentaalmacenar suma // almacenar la nueva sumaSalto inicial // retroceda y lea el siguiente númeroHecho: cargar suma // cargar la suma finalescribe // escribe la suma finalparar // pararsuma: .data 2 0 // Ubicación de 2 bytes donde se almacena la suma
La siguiente modificación del programa también se utiliza a veces:
Inicio: leer // leer n -> accjmpz Hecho // saltar a Hecho si nacc es 0.agregar suma // agregar suma a la cuentaalmacenar suma // almacenar la nueva sumaSalto inicial // retroceda y lea el siguiente númeroHecho: cargar suma // cargar la suma finalescribe // escribe la suma finalparar // pararsuma: .data 2 0 // Ubicación de 2 bytes donde se almacena la suma
Éste puede usar una entrada negativa para restar, o 0 para romper el bucle.