CPU 8086 fue el primer procesador x86 -> desarrollado por Intel
Procesadores más avanzados de la misma familia: 80186, 80286, 80386 y 80486.
Herramienta GDB
Las herramientas de desarrollo de GNU incluye un debbuger llamado GDB. Un debbuger da información al programador sobre los registros y la memoria.
Los registros
EAX -> Accumulator
ECX -> Counter
EDX -> Data
EBX -> Base
ESP -> Stack pointer (almacena direcciones de 32bits)
EBP -> Base pointer (almacena direcciones de 32bits)
ESI -> Source Index
EDI -> Destination Index
EIP -> Instruction pointer (apunta a la instrucción)
EFLAGS -> varios bit flags
Lenguaje ensamblador
Usare la sintaxis de Intel para el lenguaje ensamblador.
Configurar el GDB para que trabaje con esta sintaxis
gdb -q
(gdb) set dis intel
(gdb) quit
Sintaxis Intel -> operacion
Operaciones basicas:
mov -> mueve un valor de un origen a un destino
sub -> resta
inc -> incrementa
cmp -> compara valores
mov ebp,esp
sub esp,0x8
El compilador GCC incluye información extra de debbuging usando el -g
gcc -g primerprograma.c
gdb -q ./a.out
(gdb) list -> sale el programa en c
(gdb) disassemble main -> muestra el código ensamblador
word -> 2-bytes
double word DWORD -> 4-byte
x86 -> almacena los valores en orden little-endian, el valor menos significativo es almacenado primero