Repository navigation
Examen: Parcial 1:2023_02_27:Robotica

- Tiempo: 40 minutos
- Descripción: Examen Parcial 1. Laboratorio. Grado en Ingeniería de Robótica Software
- Fecha: 2023/Feb/27
- 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 calculos.s, que contenga 3 variables enteras denominadas var1, var2 y var3 que se deben situar en ese orden en el segmento de datos (var1 debe estar en la primera posición de memoria disponible). La variable var1 está inicializada con el valor constante 0xAA. Las variables var2 y var3 almacenan los resultados de los siguientes cálculos:
var2 = (a - b) + c + 5var3 = var2 + 1
Las expresiones se deben evaluar para los valores a=10; b=20; c=30
NOTA: Envía el fichero calculos.s con la solución como una entrega del laboratorio
Como siempre ocurre al programar, existen infinitas soluciones. Pero en todas ellas se debe respetar la especificación
Este es el contenido del fichero calculos.s:
##-- Programa para realizar los siguientes calculos
##-- var1 = 0xAA
##-- var2 = (a - b) + c + 5
##-- var3 = var2 + 1
.data
#-- Variables
#-- ESPECIFICACION: Variables en orden
var1: .word 0xAA #-- ESPECIFICACION
var2: .word 0
var3: .word 0
.text
#--- Valores iniciales
#--- a=10; b=20; c=30
li x1, 10
li x2, 20
li x3, 30
#--- Realizar el cálculo: var2 = (a - b) + c + 5
#-- x10 = (x1 - x2) + x3 + 5
sub x10, x1, x2 #-- x10 = x1 - x2
add x10, x10, x3 #-- x10 = (x1 - x2) + x3
addi x10,x10,5 #-- X10 = (x1 - x2) + x3 + 5
#-- Almacenar el cálculo en var2
la x11, var2
sw x10, 0(x11) #-- Almacenar var2 = (a - b) + c + 5
#-- Almacenar el cálculo incrementado en var3
addi x10,x10,1 #-- x10 = var2 + 1
sw x10, 4(x11) #-- Almacenar var3 = var2 + 1
#-- Terminar
li a7, 10
ecallEste programa tiene 13 instrucciones. Se cumple el BONUS!
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...
El script de test está disponible, por si quieres probarlo con tus programas para practicar. También está disponible un mini-script para bajarse el rars 1.5 desde el repositorio de github
- Script de Test: TEST-01.sh
- Script de descarga del RARs: get_rars.sh
Estos scripts se han hecho para ejecutarse en la bash 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:
calculos.s, o puedes bajarte el fichero ya solucionado: calculos.s - Crea el directorio TEST y mete los siguientes ficheros
-
TEST-01.sh--> Script de test -
get_rars.sh--> (Opcional) Script para descargar el RARs -
rars1_5.jar--> El simulador RARs
-
En el directorio TEST necesitas tener el RARs. Si ya lo tienes descargado copialo a TEST. Si no lo tienes, ejecuta el script de descarga (get_rars.sh). Estos son los ficheros de la carpeta Test:
obijuan@Hoth:~/Parcial1/TEST$ ls
get_rars.sh TEST-01.shEjecutamos el script get_rars.sh:
obijuan@Hoth:~/Parcial-1/TEST
$ ./get_rars.sh
--2023-03-05 11:53:47-- https://github.com/TheThirdOne/rars/releases/download/v1.5/rars1_5.jar
Resolving github.com (github.com)... 140.82.121.4
[....]
rars1_5.jar 100%[======================================>] 1,76M 9,79MB/s in 0,2s
2022-11-04 09:15:40 (8,71 MB/s) - ‘rars1_5.jar’ saved [1843878/1843878]
obijuan@Hoth:~/Test$ Ahora ya tenemos todos los ficheros:
obijuan@Hoth:~/Parcial-1/TEST$ ls
get_rars.sh rars1_5.jar TEST-01.shPara realizar la prueba hay que ejecutar el script TEST-01.sh:
obijuan@Hoth:~/Parcial-1/TEST$ bash TEST-01.shEsta es la salida:
-----Ejecutando TEST-01-----
> rars1_5.jar existe
> ✅️ ../calculos.s existe
> ➡️ PROBANDO: ../calculos.s
java -jar rars1_5.jar nc me ic dump 0x10010000-0x10010010 HexText mem.hex 10000 dump .text HexText code.hex ../calculos.s
> ✅️ mem.hex generado
> ✅️ Var1: 000000aa
> ✅️ Var2: 00000019
> ✅️ Var3: 0000001a
> ✅️ El programa termina llamando a EXIT
> Instrucciones totales: 13
> ✅️🎖️ BONUS!!!. Menos de 14 instrucciones
> Ciclos de ejecución: 12
------FIN-------
Al terminar se queda esperando a que apretemos ENTER
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: El simulador RARs
L2: Calculando expresiones
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
L13: RV32I: Resto de instrucciones
L14: Macros
L15: Entrada/Salida a bajo nivel
L16: Multiplicaciones/divisiones. Unit Tests 🚧
L17: Biblioteca stdio: salida a alto nivel 🚧
Los registros de estado y control (CSR)
Interrupciones y excepciones
Borrador
Soluciones a los ejercicios planteados en cada sesión para practicar:
Sesión L1
Sesión L2
Sesión L3
Sesión L4
Sesión L5
Sesión L6
Sesión L7
Sesión L8
Sesión L9
Sesión L10
Sesión L11
Sesión L12
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
GISAM. Extra. 2025-Jun-17
GISAM. Parcial 1. 2025-Oct-20
GISAM. Parcial 2. 2025-Nov-19
GISAM. Parcial 3. 2026-Enero-9
GISAM. Parcial 1. 2026-Oct-21
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
TELECO. Extra. 2025-Jun-17
TELECO. Parcial 1. 2025-Oct-10
TELECO. Parcial 2. 2025-Nov-13
TELECO. Parcial 3. 2026-Ene-21
TELECO. Extra. 2026-Jun-25
TELECO. Parcial 1. 2026-Oct-09
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
Robótica. Parcial 1. 2025-Feb-25
Robótica. Parcial 2. 2025-Mar-31
Robótica. Parcial 3. 2025-May-19
Robótica. Parcial 1. 2026-Feb-23
Robótica. Parcial 2. 2026-Abr-13
Robótica. Parcial 3. 2026-May-11
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
Datos. Parcial 1. 2025-Oct-15
Datos. Parcial 2. 2025-Nov-19