C++ : Introducción a ensamblador x86 de 32 bits #Videojuegos #UA [ SP1.1 2020 ]
Profesor Retroman
0:00 / 0:00
C++ : Introducción a ensamblador x86 de 32 bits #Videojuegos #UA [ SP1.1 2020 ]
17 524 просмотра · 5 лет назад
Profesor Retroman
20,7 тыс. подписчиков
17 524 просмотра · 5 лет назад
[ Videojuegos en C++ 2020/21 Previa #1.1 ]
Serie completa: https://bit.ly/CppGameDev21
Damos una introducción al #ensamblador de #Intel #x86 de 32 bits para poder entender mejor cómo funciona #C++ por dentro. Conociendo las bases del ensamblador generado por el compilador, podemos entender cómo funcionan las distintas partes de nuestro código C++ y trabajar para mejorarlo.
En esta introducción vemos lo más básico:
Los registros generales de Intel x86: eax, ebx, ecx, edx, esi, edi, esp, ebp
La relación de los registros de 32 bits con los registros clásicos de 8 y 16 bits de #8086
Cómo compilar en C++ y obtener el ensamblador generado
Diferencias entre ensamblador x86, x86_64 y los formatos de AT&T e Intel
Cómo compilar código en 32 bits
Las instrucciones básicas: push, pop, call, add, ret y mov
Creando un primer programa sencillo en ensamblador x86 de 32 bits de PC usando nasm
Diferencia entre los símbolos de entrada _start y main
Secciones de código .data, .bss y .text
Uso de la sección BSS para datos inicializados al comienzo de un programa
Etiquetas y datos básicos con db
Imposibilidad de crear código automodificable en ensamblador de PC
Formato de ejecutable en Linux: elf
Usando objdump para ver el contenido de los ficheros objeto y el código máquina
Observando el parecido del código máquina de Intel y el de Z80
Optimizaciones básicas debidas al parecido de los códigos máquina de Intel y Z80
Enlazado utilizando directamente el linker ld a mano
Uso de GCC para enlazar y disponer de la librería estandar de C
Introducción a las principales convenciones de llamada en C: cdecl y stdcall
Configuración de desarrollo utilizada:
Linux Manjaro 5.11.15-1 x86_64
GCC 10.2.0
Clang 11.1.0
Standard C++20 (Principalmente C++17, algunos detalles de C++20)
Clase regular de la asignatura Videojuegos 1, del Grado en Ingeniería Multimedia de la Universidad de Alicante. Clase impartida en directo debido a la situación sanitaria.
Clase de Videojuegos 1, 2020/21. Sesión Previa-1.1 (P1.1).
Martes, 24/11/2020
Grado en Ingeniería Multimedia
Universidad de Alicante