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 dentro5 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 direccionamiento5 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 control5 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 pila5 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 rendimiento5 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 compilador5 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 cierre5 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.
Este sitio web utiliza cookies propias y de terceros para recopilar información con finalidad técnica. No se recaban ni ceden datos de carácter personal sin tu consentimiento. Más información en la política de cookies.