Esta versión modificada del simulador MARIE.js introduce capacidades de perfilado de rendimiento y análisis de ocupación de memoria, permitiendo evaluar la eficiencia de algoritmos escritos en lenguaje ensamblador MARIE.
Autor de las modificaciones: Adriano Scatena
A diferencia de la versión original, esta edición se centra en la métrica de eficiencia del hardware y el uso optimizado de los recursos de memoria.
Se ha integrado un nuevo módulo en la interfaz de usuario que monitorea la ejecución en tiempo real:
- Contador de Microsteps: Registra el total de micro-operaciones de transferencia entre registros (RTL) realizadas por la unidad de control.
- Contador de Instrucciones: Muestra la cantidad de instrucciones completas (ciclos de búsqueda, decodificación y ejecución) procesadas.
El simulador ahora identifica y diferencia el uso de la memoria principal (
- Segmento de Programa: Espacio ocupado por las instrucciones ejecutables tras el proceso de ensamblado.
- Segmento de Datos: Cálculo dinámico del espacio ocupado por variables estáticas (declaradas con
DEC,HEX,OCT) y datos generados dinámicamente en tiempo de ejecución mediante operaciones de almacenamiento (Store,StoreI,JnS). - Métrica de Ocupación: Visualización porcentual del uso de memoria total para cada segmento.
- Se han añadido "hooks" en los métodos
microStep()ystep()para capturar eventos de ejecución sin interferir en la lógica original de la arquitectura. - Implementación de la lógica de detección de direcciones dinámicas dentro de la clase
MarieSim, permitiendo rastrear el mapa de memoria activa. - Nueva función
calculateDataBytesOccupiedpara consolidar el tamaño del segmento de datos sin redundancias entre declaraciones estáticas y escrituras dinámicas.
- Integración de variables de estado reactivas de Svelte para sincronizar las métricas internas del motor de simulación con el DOM.
- Creación de componentes visuales específicos para mostrar los contadores y las barras de progreso de memoria en el panel lateral.
/src/marie.ts: Motor de simulación con lógica de rendimiento añadida./src/App.svelte: Interfaz principal con el nuevo panel de métricas./public/examples: Ejemplos clásicos de MARIE para probar el rendimiento (Multiplicación, Quicksort, etc.).
La versión modificada de MARIE.js se encuentra accesible en el siguiente link (https://marie-modified-for-performance-8slxt43u0.vercel.app/).
- Clonar el repositorio.
- Instalar dependencias:
npm install
- Ejecutar en modo desarrollo:
npm run dev
- Ensamblar cualquier código
.masy observar las métricas de memoria y ciclos en el panel de Performance.
Este proyecto es un fork mejorado basado en la implementación original de MARIE.js. Puedes encontrar el código fuente original en su repositorio oficial.