Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-310

Arquitectura de computadores y ensamblador

Registros, pila, juego de instrucciones y qué hace realmente el compilador con el código en C.

Próximamente Avanzado 7 módulos · 35 clases

Formato asíncrono Docentes FP, Alumnado, Ingeniería / Industria C, JupyterLab

Lo que aprenderás

  • Leer el ensamblador generado por el compilador a partir de una función escrita en C.
  • Explicar el papel de registros, banderas y contador de programa en la ejecución de una instrucción.
  • Seguir el marco de pila de una llamada, con paso de argumentos, retorno y variables locales.
  • Traducir estructuras de control de C a saltos condicionales e incondicionales en ensamblador.
  • Relacionar jerarquía de memoria y caché con diferencias medibles de rendimiento en un bucle.
  • Comparar el código generado sin optimización y con optimización para explicar qué transforma el compilador.
  • Preparar prácticas de aula donde el alumnado observa el efecto de un cambio en el código fuente.

Contenido del curso

7 módulos · 35 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · La máquina por dentro 5 clases
  • Del transistor a la instrucción: capas de abstracción
  • Unidad de control, ALU y registros
  • Ciclo de instrucción: búsqueda, decodificación y ejecución
  • Entorno del curso: compilar y ver el ensamblador
  • Primer ejemplo: una suma en C y su traducción
Módulo 2 · Datos y direccionamiento 5 clases
  • Representación de enteros y complemento a dos
  • Coma flotante y sus sorpresas
  • Modos de direccionamiento con ejemplos
  • Alineación, tamaño de tipos y relleno en estructuras
  • Orden de bytes y por qué aparece en ficheros y redes
Módulo 3 · Instrucciones y control 5 clases
  • Movimiento de datos y operaciones aritméticas
  • Banderas de estado y comparaciones
  • Saltos condicionales: traducir un if
  • Bucles for y while vistos en ensamblador
  • Tablas de saltos y traducción de un switch
Módulo 4 · Funciones y pila 5 clases
  • Convenios de llamada y paso de argumentos
  • Prólogo y epílogo de una función
  • Marco de pila y variables locales paso a paso
  • Recursión observada en la pila
  • Desbordamiento de pila: causa vista desde dentro
Módulo 5 · Memoria y rendimiento 5 clases
  • Segmentos del proceso: código, datos, montículo y pila
  • Jerarquía de memoria y líneas de caché
  • Recorrer una matriz por filas o por columnas: medición
  • Localidad espacial y temporal con ejemplos
  • Memoria virtual y traducción de direcciones
Módulo 6 · Qué hace el compilador 5 clases
  • Compilar sin optimización y con optimización
  • Propagación de constantes y eliminación de código muerto
  • Inserción de funciones y despliegue de bucles
  • Asignación de registros y desaparición de variables
  • Cuándo el compilador es mejor que la optimización manual
Módulo 7 · Práctica de cierre 5 clases
  • Enunciado: analizar y acelerar una función real en C
  • Perfilar y localizar el punto costoso
  • Leer el ensamblador para entender la causa
  • Aplicar un cambio y medir el efecto
  • Convertir el caso en práctica guiada para el aula

Requisitos

  • Programación en C a nivel de punteros, arrays, estructuras y funciones.
  • Nociones de sistemas operativos: proceso, memoria y ejecución de programas.
  • Se trabaja con un compilador y un depurador en el entorno preparado del curso, accesible desde el navegador.

Descripción

Entre el código en C y lo que ejecuta el procesador hay una capa que la mayoría nunca mira. Esa opacidad se paga cuando aparece un desbordamiento de pila, cuando un bucle es diez veces más lento de lo esperado o cuando hay que explicar en clase por qué una variable local desaparece al salir de la función. Ver el ensamblador convierte esas explicaciones en observación directa.

El curso avanza siempre en dos ventanas: el fuente en C y el ensamblador que produce el compilador. Se estudian registros, modos de direccionamiento, la disposición del marco de pila y la traducción de bucles y condicionales. Después se activan las optimizaciones y se compara el resultado, viendo desaparecer variables, desplegarse bucles y convertirse llamadas en código insertado.

Lo que se obtiene es un modelo mental sólido de la máquina, útil para depurar a bajo nivel, para razonar sobre rendimiento y, en el aula, para construir prácticas donde cada cambio en el fuente tiene un efecto visible. Enlaza de forma natural con el curso de compiladores e intérpretes y con cualquier trabajo posterior en sistemas empotrados.

¿Para quién es este curso?

  • Profesorado de FP de Informática que imparte arquitectura de computadores y busca ejemplos observables.
  • Alumnado de ciclos superiores que ha programado en C pero no ha visto nunca el código generado.
  • Ingeniería que trabaja con sistemas empotrados y necesita razonar sobre memoria y rendimiento.
Próximamente

Curso en hoja de ruta. Se prioriza según la demanda recogida y los proyectos en cartera.

Código
LNG-310
Nivel
Avanzado
Público
Docentes FP, Alumnado, Ingeniería / Industria
Entorno
C, JupyterLab

Este curso incluye

  • 35 clases en vídeo bajo demanda
  • Práctica íntegramente en JupyterLab, solo con un navegador
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-106Lenguajes y Fundamentos de Programación

Concurrencia: multihilo y multiproceso

Paralelizar adquisición de datos y tareas de E/S sin introducir errores difíciles de reproducir.

Python

Avanzado 33 clases

PY-107Lenguajes y Fundamentos de Programación

Testing y TDD en Python

Pruebas unitarias, fixtures y desarrollo dirigido por pruebas en proyectos técnicos reales.

Python

Avanzado 34 clases

PY-131Lenguajes y Fundamentos de Programación

Webscraping con agentes de IA en local

Agentes que navegan y extraen datos sin depender de servicios en la nube.

PythonOllama

Avanzado 34 clases