Ensamblador
De whats Wiki
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
