Skip to content

Examen: Parcial 1:2023_10_09:GISAM

Juan Gonzalez-Gomez edited this page Oct 12, 2023 · 5 revisions

Examen Parcial 1: 2023-10-09. GISAM

  • Tiempo: 40 minutos
  • Descripción: Examen Parcial 1. Laboratorio. Grado en Ingeniería de Sistemas Audiovisuales y Multimedia
  • Fecha: 2023/Oct/09
  • Temario: Sesiones L1-L4

Contenido

Enunciado

El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un programa

Test (5 ptos)

  • Realizado a través de Aula virtual
  • 10 preguntas tipo test
  • Las respuesats incorrectas restan un 25% del valor de la pregunta
  • Solución disponible en Aula virtual

Programa (5 ptos)

Escribe un programa en ensamblador del RISC-V, en el fichero calc.s, que calcule la siguiente expresión:

f = 2a + b -1

Donde a y b son dos variables almacenadas en memoria, consecutivamente. En la primera direccion del segmento de datos se sitúa la variable a y a continuación la variable b. Deben estar inicializadas con los valores a=10 y b=20

El resultado de la operación se debe guardar en el regitro X10

BONUS:

Escribe el resultado en la dirección de memoria 0x1001000C. El programa completo debe tener menos de 11 instrucciones

Solución al programa

#-- Calcular la expresion f = 2a + b - 1
#-- a y b son variables en memoria, inicializadas a 10 y 20 (a=10, b=20)
#-- Resultado en x10

	.data
a:	.word 10  #-- Variable a inicializada
b:	.word 20  #-- Variable b inicializada

	.text
	
	#-- Asignacion de registros a variables
	#-- f  = 2a  + b - 1
	#--x10 = 2x5 + x6 -1
	
	#-- Leer las variables de memoria y llevarlas a los registros
	la x11,a  #-- x11: Direccion de la variable a
	lw x5, 0(x11)  #--- x5 = a
	lw x5, 4(x11)  #--- x6 = b
	
	#-- Evaluar la expresion
	#-- En x10 metemos los resultados intermedios
	add x10, x5,x5    #-- x10 = 2a
	add x10, x10, x6  #-- x10 = (2a) + b
	addi x10, x10, -1 #-- x10 = (2a + b) - 1
	
	#-- En x10 tenemos el resultado final (que debe ser 39)
	
	# BONUS:  Escribir resultado en posición de memoria 0x1001000C
	# Programa completo tiene que tener menos de 11 instrucciones
	sw x10, 12(x11)
	
	#-- Terminar
	li a7, 10
	ecall

Este programa tiene 10 instrucciones y al ejecutarlo vemos que en la dirección 0x1001000C se almacena el valor 39

Evaluación

La evaluación del programa se hace en dos fases:

  • Funcionalidad (2.5 ptos): Se comprueba si el programa funciona, y si cumple con las especificaciones (Nombre del fichero correcto, ensablado sin errores, sin errores en tiempo de ejecución, resultado correcto, variables definidas en sus posiciones de memoria especificadas, etc). Esto se hace mediante un script de test, que automatiza el proceso

  • Código (2.5 ptos): Se inspecciona visualmente cómo está hecho el código: código limpio, claro, con comentarios, instrucciones correctas, fallos de programación, etc...

TEST automático

El script de test está disponible, por si quieres probarlo con tus programas para practicar

Preparando el entorno

El script de test se debe ejecutan en la terminal de LINUX

Sigue lo siguientes pasos:

  • Crea un directorio donde se realizarán las pruebas. Por ejemplo Parcial1
  • Pon en ese directorio el programa realizado: calc.s, o puedes bajarte el fichero ya solucionado: calc.s
  • Crea el directorio Parcial1/TEST y mete los siguientes ficheros
    • test.py --> Script de test

La estructura queda así:

Parcial1/
├── calc.s
└── TEST
    └── test.py

Ejecutamos el script test.py:

obijuan@Hoth:~/Parcial1/TEST
$ python3 test.py
────────────────────────────────────────
ARQUI-BOT
────────────────────────────────────────
> ❌️ RARS no existe
  > Descargando RARS desde la URL: https://github.com/TheThirdOne/rars/releases/download/v1.5/rars1_5.jar
  > OK!

> ✅️ RARS EXISTE
> ✅️ ../calc.s existe
> Probando: ../calc.s
> Ejecutando: java -jar rars1_5.jar x10 nc me ic 10000 dump 0x10010000-0x10010010 HexText data.hex dump .text HexText text.hex ../calc.s
> ✅️ data.hex generado
> ✅️ a: 0xa
> ✅️ b: 0x14
> ✅️ X10: 39
> ✅️ El programa termina llamando a EXIT
> Instrucciones totales: 10
> Ciclos de ejecución: 9
> Comprobando BONUS...
  > ✅️ Resultado guardado en memoria
  > ✅️ Menos de 11 instrucciones
  > 🎖️  BONUS CONSEGUIDO!!!
────────────────────────────────────────

Pulsa ENTER...

Primero comprueba si en el directorio está el fichero rars_1.5.jar. Si no es así, se lo baja del repositorio. A continuación analiza el fichero calc.s y muestra en la salida los resultados

El script es muy básico, y no detecta toda la casuistica, pero sí permite detectar las violaciones de las ESPECIFICACIONES

Autores

Licencia

Enlaces

Página principal


Sesiones de Prácticas

P1: Simulador RARs

L1: Práctica 1-1. RARs
L2: Práctica 1-2. Ensamblador
L3: Práctica 1-3. Variables

P2: E/S mapeada. Llamadas al sistema

L4: Pract 2-1. E/S mapeada
L5: Práctica 2-2: Inst. ecall
L6: Prác 2-3: Cadenas

P3: Bucles y Saltos condicionales

L7: Práct 3-1: Bucles y saltos
L8: Práct 3-2: Cadenas II

P4: Subrutinas

L9: Pract 4-1: Subrut. Nivel-1
L10: Pract 4-2: La pila
L11: Pract 4-3: Recursividad

P5: Memoria Dinámica

L12: Pract 5-1. Heap. Listas

VÍDEO DE DESPEDIDA

Ejercicios de examen

Simulacro examen 1
GISAM. Ordinario. 2019-Dic-11
GISAM. Extra. 2020-Jul-03
GISAM. Ordinario. 2021-Ene-21
GISAM. Ordinario. 2022-Ene-10
GISAM. Extra. 2022-Jun-29
GISAM. Parcial 1. 2022-Oct-26
GISAM. Parcial 2. 2022-Nov-30
GISAM. Parcial 3. 2022-Dic-21
GISAM. Parcial 1. 2023-Oct-09
GISAM. Parcial 2. 2023-Nov-11
GISAM. Parcial 3. 2023-Dic-20
GISAM. Extra. 2024-Jun-17
GISAM. Parcial 1. 2024-Oct-14
GISAM. Parcial 2. 2024-Nov-13
GISAM. Parcial 3. 2024-Dic-16
TELECO. Ordinario. 2019-Dic-13
TELECO. Extra. 2020-Jul-07
TELECO. Ordinario. 2021-Ene-21
TELECO. Extra. 2021-Jul-02
TELECO. Ordinario. 2022-Ene-10
TELECO. Extra. 2022-Jun-29
TELECO. Ordinario. 2023-Ene-10
TELECO. Extra. 2023-Jun-29
TELECO. Parcial 1. 2023-Oct-20
TELECO. Parcial 2. 2023-Nov-17
TELECO. Parcial 3. 2023-Dic-22
TELECO. Extra. 2024-Jun-17
TELECO. Parcial 1. 2024-Oct-10
TELECO. Parcial 2. 2024-Nov-21
TELECO. Parcial 3. 2024-Dic-19
Robótica. Ordinario. 2020-Jun-1
Robótica. Extra. 2020-Jul-13
Robótica. Ordinario. 2021-Mayo-20
Robótica. Extra. 2021-Junio-16
Robótica. Parcial 1. 2022-Feb-25
Robótica. Parcial 2. 2022-Abril-1
Robótica. Parcial 3. 2022-Mayo-6
Robótica. Parcial 1. 2023-Feb-27
Robótica. Parcial 2. 2023-Mar-27
Robótica. Parcial 3. 2023-May-08
Robótica. Parcial 1. 2024-Feb-26
Robótica. Parcial 2. 2024-Mar-20
Robótica. Parcial 3. 2024-May-06
Robótica. Extra. 2024-Junio-24
Datos. Parcial 1. 2023-Oct-09
Datos. Parcial 2. 2023-Nov-15
Datos. Parcial 3. 2023-Dic-20
Datos. Parcial 1. 2024-Oct-09
Datos. Parcial 2. 2024-Nov-13
Datos. Parcial 3. 2025-Ene-17

SOLUCIONES

Práctica 1: Sesiones 1,2 y 3
Práctica 2: Sesiones 4, 5 y 6
Práctica 3: Sesiones 7 y 8
Práctica 4: Sesiones 9, 10 y 11
Práctica 5: Sesión 12

Clone this wiki locally