sábado, 11 de octubre de 2008

Lenguaje ensamblador & procesador x86

Familia x86
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



No hay comentarios: