VIDEOJUEGOS I (21038)
Section outline
-
Clases 2024/25
Acceso privado (Youtube)
- Usad la cuenta asociada a Google que disteis al crear los grupos.
- No descargues ni difundas los vídeos: son privados exclusivamente para ti.
VIDEOJUEGOS 2 (C++)
-
S10 (03/abr)
-
S09 (25/mar)
-
S07 (11/mar)
-
S06 (04/mar)
-
S05 (25/feb)
-
S04 (18/feb)
-
S03 (11/feb)
-
S02 (04/feb)
-
S01 (28/ene)
VIDEOJUEGOS 1 (C++)
-
S15 (17/dic)
-
S14 (10/dic)
-
S13 (03/dic)
-
S12 (26 / nov)
-
S11 (19 / nov)
-
S10 (12 / nov)
VIDEOJUEGOS 2 - curso anterior (2023/24)
-
V2-23 S03 (13 / feb / 24)
- 📹 V2-23-S03.2 ~ C++ Objetos, Variables, Tipos, Punteros y Lifetime
TEMAS: ¿Qué son realmente una variable y un objeto? ¿Qué son tipos, tiempo de vida (lifetime) y duración de almacenamiento? Tipos de lifetime (automático o local, estático o global, dinámico, temporal y local al thread). Los objetos temporales son objetos. Entender los punteros: objetos que se refieren a otro objeto. Al objeto puntero normalmente accedemos usando una variable, al apuntado con una operación (in-dirección, *). Mirar el código ensamblador y entender lo que sucede; instrucción MOV, acceso a memoria, BYTE, WORD, DWORD, Código máquina en x86-64.
-
V2-23 S04 (20 / feb / 24)
- 📹 V2-23-S04.2 ~ C++ Ejecutables y memoria: ELF, .bss .data .rodata, stack, heap, protección
CONCEPTOS: ¿Qué es un programa? Compilar a mano sin florituras. Valor de retorno de un programa en Linux. Librerías = otros programas. ¿Qué es una librería compartida (shared object)? ¿Qué son los archivos / ficheros? ¿Dónde están los ficheros? ¿Cómo se ejecuta un programa? Mapa de la Memoria en Linux. ¿Qué es la protección de memoria y por qué la hace el sistema operativo? ¿Qué es un Segmentation Fault (Violación de Segmento)? ¿Qué es la memoria "mapeable" (asignable)? - ¿Dónde se carga el código del programa? Utilidades para entender cómo funcionan los programas en Linux. ELF: Executable and Linking Format (formato de ejecutable en Linux). Utilidad: readelf. Utilidad: hexdump - Utilidad: objdump. Viendo las librerías necesitadas y ubicaciones de objetos en memoria. Viendo el código máquina y ensamblador de las funciones. Utilidad: strace. Entendiendo todo el proceso de carga de un ejecutable en memoria: execve, brk, openat, mmap. Identificando cuándo se cargan las librerías y dependencias, dónde se hacen y cómo. Entendiendo los ejecutables, secciones y permisos (R:READ, W:WRITE y E:EXECUTE). .init: código de inicialización PREVIO a main. .text: código del programa. .fini: código que se ejecuta posterior al programa - .data: datos estáticos (objetos globales) que pueden leerse y escribirse. .rodata: constantes globales. .bss: espacio para objetos globales NO-INICIALIZADOS. ¿Qué ocurre cuando hacemos new? Enlazado estático con -static. ¿Qué cambia cuando creo una variable estática (global) de una automática (local)? Imprimir una dirección de memoria. Entendiendo el operador dirección (&). Identificando si algo está en el HEAP, STACK o en .data / .rodata / .bss ¿En qué consiste realmente reservar? Observando cuándo se construyen los objetos estáticos y automáticos. ¿Por qué cambia la dirección de memoria de objetos automáticos en el stack? ¿Cómo funciona el stack y cómo reserva memoria automáticamente? ¿Cómo sabe mi programa qué espacio se está usando y cuál no? Funcionamiento de la pila (STACK). Ámbitos (frames), RBP y RSP. Variables automáticas en ensamblador. Posibilidades para objetos estáticos: .bss (sin inicializar), .data (inicializados), .rodata (constantes) Cómo se crean y destruyen objetos (mecanismos y tiempo de vida) Paso de parámetros: crear una copia de un objeto o dar la dirección ¿Cuándo ocurre un Segmentation Fault y cómo entenderlo? - Usar el depurador
Productividad, Aprendizaje y Mejora Personal