[en] Assembly languages are commonly studied in basic Computer Architecture courses to explain the inner workings of processors. A significantly large set of assembly languages has arisen from the various different computer architectures that exist. Said set is increasing as more hardware architectures are being developed. Choosing which assembly language to study in a subject and how to do so is a decision limited by the development and simulation tools available for each architecture. This project describes the implementation of a prorotype of an education-oriented, Java-based assembly language simulator. This simulator has been developed to support an increasing set of different assembly languages, focusing on those of RISC architectures. Currently, the ARM LEGv8 backend is implemented, whose architecture is described in Computer Organization and Design: ARM edition. This backend implements instruction pipelining functionalities such as the ones described in Computer Architecture: A Quantitative Approach, including the simulation of multicycle functional units. The RV64I subset of instructions from the RISC-V architecture has also been implemented, proving the extension capabilities of the simulator. The work developed in this project has led to the writing of two scientific articles that have been accepted and will be presented in the XXXI Jornadas de Paralelismo 2020/2021, organized by the Sociedad de Arquitectura de Computadores (SARTECO). We consider that the developed tool might be really useful to both undergraduate computer science students and Computer Architecture professors.

[es] Los lenguajes ensambladores son comúnmente estudiados en asignaturas básicas sobre Arquitectura de Computadores para explicar el funcionamiento de los procesadores. Existe un conjunto significativo de lenguajes ensambladores surgidos de las distintas arquitecturas de computadores existentes. Dicho conjunto de lenguajes va en aumento conforme se desarrollan más arquitecturas hardware. Elegir qué lenguaje ensamblador estudiar y de qué modo es una decisión limitada a las tecnologías de desarrollo o simulación existentes para cada arquitectura. Este trabajo describe la implementación de un prototipo de simulador de lenguajes ensambladores con propósito docente escrito en Java. Este simulador ha sido desarrollado para soportar un conjunto extensible de lenguajes ensambladores distintos, centrándose en aquellos de arquitecturas RISC. Actualmente, está implementado el backend para ARM LEGv8, arquitectura descrita en Computer Organization and Design: ARM edition. Este backend implementa funcionalidades de segmentación de instrucciones, tales como las descritas en Computer Architecture: A Quantitative Approach, incluyendo la simulación de unidades funcionales multiciclo. También se ha implementado el backend para el subconjunto de instrucciones RV64I de RISC-V, validando la capacidad de extensión del simulador. El trabajo desarrollado en este proyecto ha dado lugar a dos publicaciones científicas que han sido aceptadas y serán presentadas en las XXXI Jornadas de Paralelismo 2020/2021 de la Sociedad de Arquitecturas de Computadores (SARTECO). Consideramos que la herramienta desarrollada puede ser de gran utilidad tanto para docentes como para estudiantes de asignaturas básicas de Arquitectura de Computadores.