Skip to content
Juan Gonzalez-Gomez edited this page Jan 27, 2026 · 77 revisions

Este curso está refenciado en el índice de materiales educativos de la Fundación RISCV

Información

La asignatura de arquitectura de computadores de la EIF-URJC se imparte en diferentes grados. El material es común para todas ellas

Cómo hacer este curso

Este es un curso totalmente práctico. Para realizarlo necesitarás un ordenador (con cualquier sistema operativo) y el simulador RARs

El curso lo debes seguir de manera secuencial, empezando por la sesión 1. Los conceptos se introducen de forma práctica, uno tras otro. En cada nueva sesión aparecen conceptos que se apoyan en los anteriores

Antes de pasar a la siguiente sesión, intenta hacer los ejercicios propuestos. En el apartado de soluciones encuentrarás las soluciones, comentadas. Pero recuerda, para dominar algo y comprenderlo perfectamente hay que practicarlo. Y mucho. Haz los ejercicios

Para los estudiantes de la EIF-URJC las clases serán en vivo y en directo, y este material lo usaremos de apoyo

Pero el curso está pensado para que cualquier persona de habla hispana lo pueda seguir, desde cualquier parte del mundo, a su propio ritmo

VIDEOS

Además de los contenidos en la wiki, hay una colección de 53 vídeos de apoyo en Youtube

Este es el primero. Haz click en la imagen para verlo

Vídeo 1/53: Simulando el "Hola Mundo" con el RARs

Click to see the youtube video

Vídeo 53/53: Despedida. Motivaciones del curso. Se puede usar como vídeo de introducción 😀️

Click to see the youtube video

Contenidos

  • Práctica 1: El simulador RARS. Ensamblador. Segmento de código. Segmento de dato. Variables
    • Sesión L1: Toma de contacto con el simulador RARs. Programa Hola mundo. Instrucción addi
    • Sesión L2: Comprender cómo funciona el procesador. Toma de contacto con el Mapa de memoria. Programas para evaluar expresiones
      • Vídeo 3. Funcionamiento del procesador. Código máquina. Lenguaje ensamblador
      • Vídeo 4. Mapa de memoria. Segmento de código
      • Vídeo 5. Etiquetas. Instrucción add
      • Vídeo 6. Instrucción sub. Evaluación de expresiones
    • Sesión L3: Manejo de variables. Segmento de datos. pseudoinstrucciones. Acceso a memoria
      • Vídeo 7. Pseudo-instrucciones
      • Vídeo 8. Segmento de datos
      • Vídeo 9. Accediendo a una variable: Instrucciones load y store
      • Vídeo 10. Accediendo a varias variables
  • Práctica 2: Entrada/Salida. Llamadas al sistema.
    • Sesión L4: Definición de constantes. E/S mapeada y display de 7 segmentos
    • Sesión L5: Llamadas al sistema. ABI. Registros temporales (tx) y de argumento (ax). Ejemplos: PrintInt, ReadInt, Princhar
    • Sesión L6. Definir y almacenar cadenas. Servicios PrintString y ReadString. Instrucciones lb, sb, lh, sh. Usando el display de 7 segmentos y el teclado. Directiva .include
      • Vídeo 17. Cadenas definidas en tiempo de compilación
      • Vídeo 18. Cadenas definidas en tiempo de EJECUCIÓN
      • Vídeo 19. Manipulando cadenas. Instrucciones lb y sb
      • Vídeo 20. Accediendo a los displays y al teclado hexadecimal
      • Vídeo 21. Medias palabras. Alineamiento. Directiva Include
  • Práctica 3: Bucles. Saltos condicionales
  • Práctica 4: Llamada a subrutinas. Pila. Recursividad
    • Sesión 9. Programa principal/subrutinas. Mecanismo jal/ret. Separación en ficheros. Paso de parámetros. Convenio uso de registros
    • Sesión 10. Niveles de profundidad. Encadenamiento de llamadas a subrutinas. ABI RISC-V. Registros preservados y NO preservados. Uso de la pila
    • Sesión 11. Recursividad. Funciones recursivas. Mecanismos de implementación de funciones recursivas
      • Vídeo 43. Algoritmos y recursividad
      • Vídeo 44. Factorial, mediante subrutinas anidadas
      • Vídeo 45. Factorial, mediante subrutinas anidadas
      • Vídeo 46. Recursividad en cadenas
      • Vídeo 47. Ejercicio recursivo resuelto: longitud de una cadena
  • Práctica 5: Memoria dinámica. Listas
    • Sesión 12. Reseva de memoria. Estructuras de datos. Listas enlazadas
  • Vídeo 53: DESPEDIDA

Feedback recibido

  • Mensaje:

Antes de nada, quería agradeceros la asignatura y la forma de darla. He asistido a todas las clases porque, sinceramente, me parecían muy entretenidas y sentía que siempre se aprendía algo nuevo. La manera en la que habéis planteado la asignatura, partiendo desde cero y sin dar nada por sabido y avanzando poco a poco, ha hecho que resulte muy motivadora. De hecho, gracias a esto he descubierto que el lenguaje ensamblador me gusta bastante, sobre todo por la sensación de control que tienes sobre lo que estás haciendo a bajo nivel

  • Mensaje:

Quería escribirte este correo para darte las gracias por tu trabajo en las clases de Arquitectura de Computadores a lo largo de este cuatrimestre
Cuando comencé la carrera no tenía muy claro a lo que me iba a enfrentar y no tenía ni idea de programación. Con el paso de los años he ido aprendiendo poco a poco a programar (más o menos, todavía no se me da muy bien), pero este ha sido el primer año que he tenido una experiencia realmente buena con un profesor de programación
No solo es la forma en la que explicas los conceptos en clase, sino también la buena energía que transmites todos los viernes y la facilidad que ofreces para resolver dudas. Además, la wiki y los videos que has subido me han parecido una herramienta de lo más útil para guiar el aprendizaje y aprender poco a poco
Personalmente, no ha sido un cuatrimestre especialmente fácil y me hubiera gustado haber sabido gestionar mejor mi tiempo entre las asingaturas de telecomunicaciones y aeroespacial para poder reflejar mejor en mis notas todo lo que he aprendido
Creo sinceramente que cuando algo se hace bien, hay que agradecerlo. Espero que pasen los años y más generaciones de estudiantes puedan disfrutar de tus clases
Muchas gracias por el cuatrimestre y un saludo

Bibliografía

  • "Computer organization and design. The hardware/software Interface. RISC-V Edition". David A. Patteron, John L. Hennessy. Ed. Morgan Kaufmann. 2018

  • "The RISC-V Reader: An Open Architecture Atlas", David Patterson and Andrew Waterman. 2017. Disponible para descarga on-line: Descarga libro

Curso libre, hecho con herramientas libres

Todo el contenido de este curso: programas, imágenes, texto... está publicado con una licencia libre. En el repositorio encontrarás los ficheros fuente de todas las figuras (formato SVG), así como todos los ficheros con el código de los ejemplos y los ejercicios

Este material lo puedes usar con cualquier propósito, sin necesidad de pedir permiso

Estas son las herramientas que se han usado para la preparación del curso. Todas ellas son libres:

Profesorado

Licencia

Enlaces

Página principal


Sesiones de Prácticas

P1: Simulador RARs

L1: El simulador RARs
L2: Calculando expresiones
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

SESIONES ADICIONALES

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

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

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
GISAM. Extra. 2025-Jun-17
GISAM. Parcial 1. 2025-Oct-20
GISAM. Parcial 2. 2025-Nov-19
GISAM. Parcial 3. 2026-Enero-9
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
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
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

https://github.com/myTeachingURJC/2019-20-LAB-AO/wiki/Examen:-Parcial-1:2026_02_23:Robotica

Clone this wiki locally