CREATOR: Simulador did´actico y gen´ erico para la programaci´ on en ensamblador Diego Camarmas-Alonso 1 elix Garc´ ıa-Carballeira 2 El´ ıas Del-Pozo-Pu˜ nal 3 y Alejandro Calder´ on Mateos 4 Resumen — En este art´ ıculo se presenta CREATOR, un simulador para la programaci´on en ensamblador desarrollado por el grupo ARCOS de la UC3M [1]. Este simulador permite definir la sintaxis y el funcio- namiento de cualquier juego de instrucciones as´ ı co- mo el convenio de paso de par´ ametros utilizado. Una vez definido cada juego de instrucciones en particular (MIPS32, ARM, RISC-V, etc.), los estudiantes pue- den utilizar el simulador para editar, compilar, eje- cutar y depurar programas escritos en ensamblador. El simulador permite tambi´ en comprobar que los pro- gramas escritos cumplen con el convenio de paso de par´ ametros que se ha definido para cada ensambla- dor. Todo ello, mejora la ense˜ nanza y uso del len- guaje ensamblador presente en distintas asignaturas como Estructura de Computadores o Arquitectura de Computadores. CREATOR es un nuevo simulador altamente intui- tivo y portable, que se ejecuta directamente en un navegador web, sin necesidad de ning´ un tipo de ins- talaci´onprevia. Este simulador inicialmente dispone del juego de instrucciones MIPS32 y RISC-V (32IMF), pero per- mite, desde el propio simulador, editar y definir el juego de instrucciones (instrucciones, formato, regis- tros, convenio de paso de par´ ametros, etc.) de cual- quier computador. El simulador dispone de la capaci- dad para crear bibliotecas de subrutinas que pueden cargarse y enlazarse con otros programas escritos en el simulador. Ello permite construir laboratorios de pr´ acticas m´ as adaptados a los objetivos docentes de- seados. La experiencia de su uso ha sido muy positiva en los cursos 2019/2020 y 2020/2021 para los estudiantes, especialmente en el entorno de ense˜ nanza vivido por el COVID-19. Palabras clave — Estructura de Computadores, Ar- quitectura de Computadores, Programaci´on en en- samblador, MIPS32, RISC-V32. I. Introducci´ on El aprendizaje de lenguaje ensamblador no solo ayuda a entender mejor el funcionamiento de un computador, tambi´ en es de ayuda a la hora de opti- mizar c´ odigo. Por ejemplo, para escribir una porci´ on de c´ odigo que debe ejecutar de la forma m´as r´ apida posible o, tambi´ en, para ajustar el c´ odigo ensambla- dor generado por el compilador. Habitualmente, en la docencia de un lenguaje en- samblador se utiliza un simulador espec´ ıfico que eje- cuta como aplicaci´on de PC (por ejemplo, QtSPIM, SPIM, etc.). Por otra parte, usar una CPU real suele complicar el entorno de trabajo (por ello, se usa un 1 Dpto. de Inform´atica, Universidad Carlos III de Madrid, e-mail: dcamarma@inf.uc3m.es. 2 Dpto. de Inform´atica, Universidad Carlos III de Madrid, e-mail: fgcarbal@inf.uc3m.es. 3 Dpto. de Inform´atica, Universidad Carlos III de Madrid, e-mail: edelpozo@inf.uc3m.es. 4 Dpto. de Inform´atica, Universidad Carlos III de Madrid, e-mail: acaldero@inf.uc3m.es. simulador) y, hasta donde los autores de este trabajo conocen, no hay un simulador que permita trabajar con distintos juegos de instrucciones. Por un lado, si se precisa aprender dos o m´as len- guajes en ensamblador a la vez (por ejemplo, MIPS [2] y RISC-V [3]), o hacer la transici´ on de un len- guaje de ensamblador a otro (por ejemplo, pasar de MIPS a RISC-V) entonces, se precisa trabajar con varios simuladores distintos (que conlleva un tiempo de adaptaci´ on a cada simulador). Ello eleva comple- jidad en el proceso de aprendizaje del lenguaje en- samblador. Por otro lado, disponer de un simulador a trav´ es de un navegador web facilita su ejecuci´on en cual- quier plataforma y permite una mayor movilidad en el aprendizaje (uso de m´ovil, tablets, etc. para con- tinuar el aprendizaje fuera de clase). La mayor parte de las herramientas est´an pensadas para ejecutarse en un PC con un conjunto limitado de sistemas ope- rativos, lo que dificulta la adaptaci´ on a nuevos entor- nos y necesidades que una situaci´ on con la pandemia vivida precisa. Para ayudar a solucionar estos problemas propone- mos CREATOR 1 (didaCtic geneRic assEmbly pro- grAmming simulaTOR), que es: simple, intuitivo, gen´ erico, multiplataforma y en el que se puede com- prender el funcionamiento de un computador a ba- jo nivel gracias a la creaci´ on y ejecuci´on de progra- mas en diferentes lenguajes ensamblador (inicialmen- te MIPS32 y RISCV 32 IMF ) y a la gran libertad de la que disponen los estudiantes y profesores para edi- tar los principales aspectos del juego de instrucciones y arquitectura sobre la que se est´a trabajando. El resto del documento se estructura de la siguien- te forma: la Secci´on II describe el Estado del Arte; la Secci´on III presenta el Simulador CREATOR y sus distintas visiones. Por ´ ultimo, la Secci´on IV presenta las principales Conclusiones y Trabajos Futuros. II. Estado del arte Para el aprendizaje de lenguaje ensamblador habi- tualmente se utilizan los simuladores SPIM, MARS y WebMIPS [4], [5], [6]. SPIM [7] permite ejecutar (y depurar) programas ensamblador sobre una arquitectura MIPS de 32 bits. Este simulador ejecuta como aplicaci´on de PC y est´a disponible para Microsoft Windows, Mac OS X y Li- nux. La interfaz de este simulador est´ a basada en la terminal del sistema operativo. No obstante, se ha desarrollado una variante de SPIM llamada QtS- 1 Disponible en https://creatorsim.github.io/