-
Notifications
You must be signed in to change notification settings - Fork 22
Examen: Parcial 1:2023_10_20:TELECO
- Tiempo: 50 minutos
- Descripción: Examen Parcial 1. Laboratorio. Grados de Telecomunicaciones
- Fecha: 2023/Oct/20
- Temario: Sesiones L1-L4
El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un programa
- 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
Escribe un programa en ensamblador del RISC-V, en el fichero calculo.s, que calcule las siguientes expresiones:
f = 3X - Y + 1
g = f - Z
Donde f
y g
son dos VARIABLES almacenadas en memoria, consecutivamente. En la primera direccion del segmento de datos se sitúa la variable f
y a continuación la variable g
. Además, X
, Y
y Z
son CONSTANTES con los valores X=10
, Y=5
y Z=3
El programa deberá realizar los cálculos pedidos a partir de las constantes, guardar el valor en sus respectivas variables en memoria y terminar
Conseguirás este bonus si has obtenido la máxima puntuación (programa perfecto) y si tiene menos de 15 instrucciones
#-- Calcular las expresiones
#-- f = 3X - Y + 1, donde X, Y, Z son tres CONSTANTES inicializadas a 10, 5 y 3 respectivamente
#-- g = f - Z
#--
#-- f y g son VARIABLES
#-- X,Y,Z son CONSTANTES inicializadas a 10, 5 y 3 respectivamente
#-- Constantes (ESPECIFICACIONES)
.eqv X 10
.eqv Y 5
.eqv Z 3
#-- Variables (ESPECIFICACIONES)
.data
f: .word 0 #-- f en la primera direccion (ESPECIFICACION)
g: .word 0 #-- g en la siguiente direccion (de palabra) (ESPECIFICACION)
.text
#-- Registros usados para los calculos
#-- x5 --> X
#-- x6 --> Y
#-- x7 --> Z
#-- Inicializar los registros con los valores de las constantes
li x5, X
li x6, Y
li x7, Z
#-- Calcular f = 3X - Y + 1
#-- x10 --> f
add x10, x5, x5 #-- f = X + _X
add x10, x10, x5 #-- f = X + X + X = 3X
sub x10, x10, x6 #-- f = 3X - Y
addi x10, x10, 1 #-- f = 3X - Y + 1
#-- Almacenar variable f
la x8, f #--- x8: Direccion de f
sw x10, 0(x8)
#-- Calcular g: g = f - Z
sub x10, x10, x7
#-- Almacenar variable g
#-- g se encuentra 4 bytes por encima de f
sw x10, 4(x8)
#-- Este programa tiene 14 instrucciones... CUMPLE EL BONUS!!
#-- Terinar
li a7, 10
ecall
Este programa tiene 14 instrucciones. ¡¡El bonus se cumple!!
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. Se quitan puntos según los errores encontrados:
- Violacion de especificaciones: -0.5
- Programa no ensambla: -0.5
- Error en tiempo de ejecución al pasar las pruebas: Runtime error: -0.5
-
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...
El script de test está disponible, por si quieres probarlo con tus programas para practicar
- Script de Test: test.py
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:
calculo.s
, o puedes bajarte el fichero ya solucionado: calculo.s - Crea el directorio Parcial1/TEST y mete los siguientes ficheros
-
test.py
--> Script de test
-
La estructura queda así:
Parcial1/
├── calculo.s
└── TEST
└── test.py
Ejecutamos el script 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
> ✅️ ../calculo.s existe
> Probando: ../calculo.s
> Ejecutando: java -jar rars1_5.jar x10 nc me ic 10000 dump 0x10010000-0x10010010 HexText data.hex dump .text HexText text.hex ../calculo.s
> ✅️ data.hex generado
> ✅️ f: 0x1a
> ✅️ g: 0x17
> ✅️ El programa termina llamando a EXIT
> Instrucciones totales: 14
> Ciclos de ejecución: 13
> Comprobando BONUS...
> ✅️ Menos de 15 instrucciones
> 🎖️ BONUS CONSEGUIDO!!!
────────────────────────────────────────
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 calculo.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
- Katia Leal Algara
- Juan González-Gómez (Obijuan)
L1: Práctica 1-1. RARs
L2: Práctica 1-2. Ensamblador
L3: Práctica 1-3. Variables
L4: Pract 2-1. E/S mapeada
L5: Práctica 2-2: Inst. ecall
L6: Prác 2-3: Cadenas
L7: Práct 3-1: Bucles y saltos
L8: Práct 3-2: Cadenas II
L9: Pract 4-1: Subrut. Nivel-1
L10: Pract 4-2: La pila
L11: Pract 4-3: Recursividad
L12: Pract 5-1. Heap. Listas
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
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