0% encontró este documento útil (0 votos)
7 vistas3 páginas

Generador de Código a Ensamblador MIPS

El documento describe un proyecto para implementar un generador de código que traduzca cuádruplos a código ensamblador MIPS, incluyendo el manejo de registros, traducción correcta y administración de memoria. Se requiere que el código generado sea ejecutable y se entregue junto con un reporte breve que explique el algoritmo de asignación de registros. La evaluación se basará en la funcionalidad del código, la administración de recursos y la calidad de la documentación.

Cargado por

JAVIHOT :3 p
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas3 páginas

Generador de Código a Ensamblador MIPS

El documento describe un proyecto para implementar un generador de código que traduzca cuádruplos a código ensamblador MIPS, incluyendo el manejo de registros, traducción correcta y administración de memoria. Se requiere que el código generado sea ejecutable y se entregue junto con un reporte breve que explique el algoritmo de asignación de registros. La evaluación se basará en la funcionalidad del código, la administración de recursos y la calidad de la documentación.

Cargado por

JAVIHOT :3 p
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Lenguajes y Autómatas II

Objetivo: Implementar un generador de código que traduzca una secuencia de Cuádruplos a código Ensamblador,
demostrando el manejo de Registros (4.1), Lenguaje Ensamblador (4.2) y Administración de Memoria (4.4).

NOTA: El código generado debe poder ejecutarse.

Podrían usar el simulador MARS (MIPS Assembler and Runtime Simulator).

ID Operador Op1 Op2 Resultado

-1 * A B T1
-2 + T1 C T2
-3 - D 10 T3
-4 < T2 T3 T4
-5 IFFALSE T4 -8
-6 = T2 X
-7 GOTO -9
-8 LABEL -8
-9 = T3 X
-10 RET

Lógica por implementar: if (A * B + C) < (D - 10) then X = A * B + C else X = D – 10


El Desarrollo (Generador de Código)

El estudiante debe crear un programa (en el lenguaje de su elección: Python, Java, C++, etc.) que lea la tabla de
Cuádruplos (ya sea desde un archivo o un hardcode) y genere un archivo de texto con la extensión .asm o .s que
contenga el código Ensamblador MIPS correspondiente.

Puntos Clave para una Entrega: Para obtener una calificación óptima, el proyecto debe demostrar el correcto
entendimiento de los siguientes criterios:

1. Manejo de Registros (4.1)

• Asignación de Registros Temporales: Demostrar que se usaron registros MIPS ($t0, $t1, etc.) para
almacenar los resultados intermedios (T1, T2, T3, T4).

• Reutilización: El generador debe intentar reutilizar los registros temporales. Por ejemplo, una vez que T1
ya no se necesita (después del Cuádruplo 02), el registro que lo contenía debería poder ser usado para
otra variable.

2. Correcta Traducción al Ensamblador (4.2)

• Traducción 1:1: Cada operación aritmética (*, +, -) debe traducirse correctamente a una instrucción MIPS
(mul, add, sub).

• Manejo de Control: Las instrucciones de control (IFFALSE, GOTO, LABEL) deben traducirse
correctamente a instrucciones de salto condicional (bne, beq, etc.) y/o incondicional (j).

3. Administración de Memoria (4.4)


• Carga y Almacenamiento: El código generado debe usar lw (Load Word) para obtener los valores iniciales
de A, B, C, D de la memoria al registro.

• Resultado Final: El resultado final de la variable X debe ser almacenado de vuelta en la memoria usando
sw (Store Word).

• Estructura del Archivo: El archivo .asm debe incluir las secciones .data (definiendo las variables iniciales)
y .text (el código generado).

Material de Apoyo y Consulta

Puntos de la Unidad que


Recurso Descripción
Refuerza

4.2 Lenguaje ensamblador


Descarga e instalación de la herramienta. Es el
Simulador MARS y 4.4 Administración de
banco de pruebas para su código.
memoria

Referencia MIPS Tabla con las instrucciones lw, sw, add, sub, mul, y 4.1 Registros y 4.2
Básica las instrucciones de salto. Lenguaje ensamblador

[Video de YouTube: Ensamblador MIPS32.


Tutorial de MARS Introducción al simulador MARS.] Tutorial que 4.1, 4.2, 4.4 (Aplicación
(YouTube) explica la interfaz, el uso de registros y la ejecución práctica)
paso a paso.

Entender el Se entiende qué son los registros (memoria


Concepto: Máquina rápida) y por qué son escasos, justificando la 4.1 Registros
de Registros necesidad de la asignación.

Elementos a Entregar

El proyecto debe entregarse en un paquete comprimido (.zip o .rar) que contenga:

1. Código Fuente del Generador: El código del programa que realiza la traducción (e.g., [Link]).

2. Archivo de Salida: El código ensamblador generado ([Link]). Este archivo debe ser funcional y
ejecutable, por ejemplo en MARS.

3. Reporte Breve (PDF/Word): Un documento de máximo 2 páginas que incluya:

o Algoritmo de Asignación: Explicación de cómo su programa decide qué Cuádruplo se asigna a


qué registro temporal.

o Captura de Pantalla: Una imagen del simulador ‘MARS’ mostrando el código generado, ejecutado
y con el valor final de la variable X visible en memoria.
Criterio de Evaluación (Rúbrica)

El proyecto será evaluado sobre una base de 100 puntos, distribuidos en tres áreas principales de la Unidad 4,
más la documentación y presentación.

Puntos
Categoría Criterio de Logro y Evidencia
Máximos

1. Generación de Traducción Completa y Funcional: El archivo [Link] es generado


35 pts.
Código (4.2) correctamente y se ejecuta sin errores sintácticos en el simulador.

Manejo de Control: Las instrucciones de control (IFFALSE, GOTO,


15 pts. LABEL) se traducen de forma lógica y correcta a saltos condicionales
(bne/beq) y etiquetas.

Traducción Aritmética: Todas las operaciones aritméticas (*, +, -, =)


20 pts. están traducidas de manera precisa a sus equivalentes MIPS (mul, add,
sub, li, etc.).

2. Manejo de Administración de Memoria (4.4): Se usan correctamente lw y sw para


Recursos (4.1 y 30 pts. cargar las variables iniciales (A, B, C, D) y almacenar el resultado final
4.4) (X).

Asignación y Reutilización de Registros (4.1): El código fuente del


generador implementa una lógica para asignar variables temporales (T1-
20 pts.
T4) a registros ($t0, $t1...). Se intenta reutilizar un registro cuando el
valor temporal ya no es necesario.

3. Desarrollo y Código Fuente del Generador: El programa que realiza la traducción es


15 pts.
Codificación legible, bien estructurado y utiliza comentarios claros.

Automatización: El generador toma la entrada de Cuádruplos y produce


10 pts.
la salida .asm de manera automática y correcta.

Reporte Breve: Incluye la explicación del algoritmo de asignación de


4. Documentación y
20 pts. registros y la captura de pantalla de MARS con el valor final de X
Entrega
verificado.

Formato de Entrega: El proyecto se entrega en el formato solicitado


10 pts.
(paquete comprimido .zip o similar) y a tiempo.

10 pts. Bono

Se otorgará un bono de hasta 10 puntos extra si el código Ensamblador generado incluye una pequeña rutina que
imprima el valor final de la variable X en la consola de MARS, demostrando un conocimiento adicional del
subsistema de E/S (syscall).

También podría gustarte