Deskripsi:
¿Qué es exactamente el puntero this? ¿Por qué existe y para qué se usa? ¿Cómo entenderlo correctamente? En esta sesión de clase en directo desmenuzaremos el puntero this desde ensamblador hasta C++, pasando por C. Entenderemos qué es, de dónde viene, por qué se usa y cómo funciona. Aprenderemos también a visualizarlo y que deje de ser magia oculta a nuestros ojos en C++. Para entenderlo, implementaremos nuestro propio puntero this en ensamblador y C y después lo veremos en C++ Por el camino aprenderemos a programar un pequeño minijuego en 1D en ensamblador, C y C++ usando Raylib. Utilizaremos este ejemplo para entender y repasar muchas cosas de cómo los ejecutables ELF en Linux, las distintas secciones de un ejecutable, cómo se cargan en memoria y cómo verlas usando objdump y readelf. También veremos cómo utilizar el depurador CGDB para depurar y ver la memoria y entender mejor lo que sucede por dentro. Aprenderemos cómo funcionan las llamadas a código en librerías dinámicas, detalles sobre las PLT (Procedure Lookup Tables) y el mecanismo de seguridad ASLR (Address Space Layout Randomization) y su implicación a la hora de generar ejecutables independientes de la posición o PIE (Position Independent Executable) Muchos detalles interesantes para explorar en una sola sesión de clase muy intensa. Para terminar, dejaremos algunas ideas de ejercicios para practicar y entender mucho mejor todos estos conceptos 0:00:00 Presentación y videojuego 1D (demo) para programar en C, C++ y ensamblador 0:05:12 Ejemplo básico C y C+:+ abrir ventana Raylib. Programar, compilar y linkar 0:17:52 Programar en ensamblador: secciones, funciones externas, parámetros, ELF, ABI, registros x86_64 0:51:25 Ensamblar con YASM y linkar con GCC: relocation, PIE, entender y corregir errores 1:01:05 Gestión del Stack (Pila) en ensamblador: alignment (alineación) a 16 bytes. Depurando con CGDB 1:20:30 ¿Por qué se desalinea la pila? main, _start y call 1:34:04 Ensamblador enlazado con ld: _start, syscall, dynamic linker, librerías dinámicas 1:51:12 Llamadas a librerías dinámicas: PLT, GOT, ASLR, wrt 1:57:17 Programando Enemy Kicker (videojuego 1D) en C++ 2:15:52 Puntero this: implementarloen C, entender punteros, parámetros y operadores 2:53:10 Entiende los métodos const en C++ con la implementación en C 3:04:15 Viendo this en ensamblador traduciendo C++ con godbolt.org 3:13:50 De C a Ensamblador: Enemy Kicker, bucles, structs y punteros === Clase de la asignatura Videojuegos 2.Curso 2023/24.Sesión 8 Grado en Ingeniería Multimedia Universidad de Alicante ===Materiales y Sistema *Máquina Virtual https://archive.org/details/CPCtelera1.5-VM *VirtualBox https://www.virtualbox.org/wiki/Downloads *Raylib https://www.raylib.com/ -Linux Manjaro 6.6.19 x86_64,GCC 13.2.1,Clang 16.0.6 ===Referencias *NASM Tutorial https://cs.lmu.edu/~ray/notes/nasmtutorial/ *System V AMD ABI **Official Docs https://cs61.seas.harvard.edu/site/pdf/x86-64-abi-20210928.pdf **Summary https://wiki.osdev.org/System_V_ABI *DT_TEXTREL warning https://stackoverflow.com/questions/76651605/understanding-a-dt-textrel-warning *Linux System Call Table https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/syscalls/ *Handling System Calls-The Linux Kernel https://linux-kernel-labs.github.io/refs/heads/master/lectures/syscalls.html#lecture-objectives *The Definitive Guide to Linux System Calls https://blog.packagecloud.io/the-definitive-guide-to-linux-system-calls/ *What is PLT https://stackoverflow.com/questions/5469274/what-does-plt-mean-here *What is PLT/GOT? https://reverseengineering.stackexchange.com/questions/1992/what-is-plt-got * PLT and GOT-key to dynamic libraries https://www.technovelty.org/linux/plt-and-got-the-key-to-code-sharing-and-dynamic-libraries.html *Problems with PIE and no-PIE https://stackoverflow.com/questions/65912204/how-to-compile-nasm-program-calling-printf *Can't call C library function on 64-bit Linux from assembly https://stackoverflow.com/questions/52126328/cant-call-c-standard-library-function-on-64-bit-linux-from-assembly-yasm-code *GDB Cheat Sheet **BASIC https://gabriellesc.github.io/teaching/resources/GDB-cheat-sheet.pdf **Intermediate https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf *Intel x86_64 **Reference Manual https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4 **Instruction Reference-Felix Cloutier https://www.felixcloutier.com/x86/ === Créditos y Licencias -Recortes de imagen con RibbetAI https://ribbet.ai/ -Imagen de Fondo Assembler, C y C++ generada con Dall-E 3 https://openai.com/dall-e-3 -Music by McKlain https://open.spotify.com/intl-es/artist/3oSxrSt7qOJw3GT4tobt4L -Galactic Tomb-Level 1-Pherenos https://soundcloud.com/mcklain/galactic-tomb-level-1-pherenos -La Guerra de Gamber [Menu Theme] https://mcklain.bandcamp.com/track/la-guerra-de-gamber-menu-theme
Mempersiapkan opsi pengunduhan
Situs web http://unidownloader.com/ adalah cara terbaik untuk mengunduh video atau trek audio terpisah jika Anda ingin melakukannya tanpa menginstal program dan ekstensi.
Ekstensi UDL Helper adalah tombol praktis yang terintegrasi dengan mulus ke dalam situs YouTube, Instagram, dan OK.ru untuk mengunduh konten dengan cepat.
Program UDL Client (untuk Windows) adalah solusi paling kuat yang mendukung lebih dari 900 situs web, jejaring sosial, dan situs hosting video, serta kualitas video apa pun yang tersedia di sumbernya.
UDL Lite adalah cara yang sangat nyaman untuk mengakses situs web dari perangkat seluler Anda. Dengan bantuannya, Anda dapat dengan mudah mengunduh video langsung ke ponsel Anda.
Format kualitas terbaik adalah FullHD (1080p), 2K (1440p), 4K (2160p), dan 8K (4320p). Semakin tinggi resolusi layar Anda, semakin tinggi pula kualitas videonya. Namun demikian, ada faktor lain yang perlu dipertimbangkan: kecepatan unduh, jumlah ruang kosong, dan kinerja perangkat selama pemutaran.
Peramban/komputer seharusnya tidak macet sama sekali! Jika hal ini terjadi, laporkan dengan menyertakan tautan ke video tersebut. Terkadang video tidak dapat diunduh secara langsung dalam format yang sesuai, jadi kami telah menambahkan kemampuan untuk mengonversi file ke format yang diinginkan. Dalam beberapa kasus, proses ini mungkin secara aktif menggunakan sumber daya komputer.
Anda dapat mengunduh video ke ponsel cerdas Anda menggunakan situs web atau aplikasi PWA UDL Lite. Anda juga dapat mengirim tautan unduhan melalui kode QR menggunakan ekstensi UDL Helper.
Cara yang paling mudah adalah dengan menggunakan program UDL Client, yang mendukung konversi video ke format MP3. Dalam beberapa kasus, MP3 juga dapat diunduh melalui ekstensi UDL Helper.
Fitur ini tersedia di ekstensi UDL Helper. Pastikan bahwa "Tampilkan tombol cuplikan video" dicentang di pengaturan. Ikon kamera akan muncul di sudut kanan bawah pemutar di sebelah kiri ikon "Pengaturan". Ketika Anda mengkliknya, frame saat ini dari video akan disimpan ke komputer Anda dalam format JPEG.
Tidak ada biaya. Layanan kami benar-benar gratis untuk semua pengguna. Tidak ada langganan PRO, tidak ada batasan jumlah atau panjang maksimum video yang diunduh.