Ensamblador

De whats Wiki

Dreceres ràpides: navegació, cerca

Programa en ensamblador:

//Salvem l'estat
0x80484a0 :       pushl  %ebp
0x80484a1 :       movl   %esp,%ebp

//char asd[30] (reservem 32 bytes per a asd, ja que ha de ser multiple de 4)
0x80484a3 :       subl   $0x20,%esp
//Agafem un punter i el posem a %eax
0x80484a6 :     leal   0xffffffe0(%ebp),%eax
//Posem %eax a la pila, sera el parametre de la funcio
0x80484a9 :     pushl  %eax
//Cridem la funcio
0x80484aa :    call   0x80483ec 
//Alliverem la memoria usada per a les variables locals
0x80484af :    addl   $0x4,%esp


Titol: [ASM] Coses ensamblador Data: 26-07-2005 //et deixa el llenguatge màquina l'arxiu asd gcc -S -o asd asd.c

//obrir un executable amb el gdb gdb executable

//veure el codi amb ensamblador del programa (gdb) disassemble main o (gdb) disas main

//veure el codi font en c dl programa q hem obert (gdb) list

//posar un break a una linia (gdb) break nºlinia

//engegar el programa q pararar al break o al final (gdb) run

//mostrar el valor dl registre esp (gdb) print $esp o (gdb) print $esp

//printar la direcció d'una variable en c (gdb) print &buf

//printar el valor d'una direcció de memòria (gdb) x 0xbfffe35c

//mostrar els 24 words a partir de %esp (gdb) x/24 $esp

//per executar la següent linia de codi (gdb) next

//compilar amb mes info pel gdb gcc -ggdb hola.c -o hola

Consultar posicio de retorn

gdb> print $ebp+4 $1 = (void *) 0xbf86fbdc gdb> x 0xbf86fbdc 0xbf86fbdc: 0x080483e2


Administrador