Está en la página 1de 2

TALLER 1

DESCRIPCIÓN Y JUSTIFICACIÓN

Sebastián Camilo Casas Rojas


Juan Sebastián Montoya Cómbita
Gerson Nicolás Pineda Lara
Estudiantes

Jorge Eduardo Ortiz Triviño


Docente

Universidad Nacional de Colombia – Sede Bogotá


Facultad de ingeniería
Departamento de ingeniería de sistemas e industrial
Lenguajes de programación
Bogotá D.C.
Noviembre del 2022
TALLER 1

DESCRIPCIÓN Y JUSTIFICACIÓN

Tomando como base la máquina John Von Newmann propuesta por el profesor Ricardo Peña
Marí, se amplió el conjunto de 15 microinstrucciones a 27, de tal manera que se incluyó una
para la gestión del almacenamiento secundario, otra para la gestión de dispositivos de
entrada/salida y otra para la gestión de dispositivos de comunicaciones.

A partir de esto, se realizó el análisis, diseño e implementación de un emulador para la


máquina descrita anteriormente usando el lenguaje Python.

Una vez implementado el emulador, se construyó un ensamblador y un cargador capaz de


traducir y ejecutar las instrucciones creadas anteriormente.

Por último, se diseñó un compilador que usa el paradigma imperativo que es capaz de crear un
archivo ejecutable a partir de un código fuente.

El análisis, diseño y construcción de este tipo de herramientas permite una comprensión


profunda del proceso necesario para la ejecución de un programa, en este caso de una
máquina John Von Neumann, que permitirá el desarrollo del conjunto de habilidades con el que
posteriormente se podrán llevar a cabo proyectos más complejos.

El emular una máquina como al que propone el profesor Peña nos lleva a la necesidad de
reflexionar y pensar una manera en la cual nuestro programa sepa reconocer las instrucciones
y también detectar todos los posibles errores que se pueden dar (Instrucciones inexistentes o
mal escritas, errores de desbordamiento, llamadas a posiciones inexistentes o vacías de
memorias o registro, ingresar un registro un tipo de dato no valido o diferente, operación entre
distintos tipos de datos, etc). Tener estos aspectos en cuenta, nos lleva a aplicar conceptos
aprendidos a lo largo del curso del lenguajes de programación para poder resolver este tipo de
problemas, a pesar de que los puntos aparentemente no tienen interrelación, en realidad están
diseñados y justificados para comprender mejor el funcionamiento de un lenguaje de
programación en algunos componentes esenciales.

También podría gustarte