Autor
|
Tema: leave y movl (Leído 4,947 veces)
|
@synthesize
Wiki
Desconectado
Mensajes: 640
Another Brick in the Wall
|
Estoy empezando a depurar programas con GDB, y hacienod disas main me he encontrado con 2 opcodes que no cononzco. He bsucado por google, pero no he sacado nada en claro SOn: leave y movl. Movl me imagino que es algo de mover, por que si conozco Mov, peor no sé que pinta la L ahí. Sobre leave, decir que me aparece dentro de otra función que no es main. Código: serch@serch-server:~/Escritorio$ gdb -q a.out
Leyendo símbolos desde /home/serch/Escritorio/a.out...(no se encontraron símbolos de depuración)hecho.
(gdb) run
Starting program: /home/serch/Escritorio/a.out
Hi ASM!
Program exited normally.
(gdb) disas main
Dump of assembler code for function main:
0x08048414 <+0>: push %ebp
0x08048415 <+1>: mov %esp,%ebp
0x08048417 <+3>: and $0xfffffff0,%esp
0x0804841a <+6>: call 0x8048428 <proc>
0x0804841f <+11>: mov $0x0,%eax
0x08048424 <+16>: mov %ebp,%esp
0x08048426 <+18>: pop %ebp
0x08048427 <+19>: ret
End of assembler dump.
(gdb) disas proc
Dump of assembler code for function proc:
0x08048428 <+0>: push %ebp
0x08048429 <+1>: mov %esp,%ebp
0x0804842b <+3>: sub $0x18,%esp
0x0804842e <+6>: mov 0x804a020,%eax
0x08048433 <+11>: mov %eax,%edx
0x08048435 <+13>: mov $0x8048520,%eax
0x0804843a <+18>: mov %edx,0xc(%esp)
0x0804843e <+22>: movl $0x8,0x8(%esp)
0x08048446 <+30>: movl $0x1,0x4(%esp)
0x0804844e <+38>: mov %eax,(%esp)
0x08048451 <+41>: call 0x8048344 <fwrite@plt>
0x08048456 <+46>: leave
0x08048457 <+47>: ret
End of assembler dump.
(gdb)
|
|
|
En línea
|
|
|
|
bizco
Desconectado
Mensajes: 698
|
|
|
|
En línea
|
|
|
|
@synthesize
Wiki
Desconectado
Mensajes: 640
Another Brick in the Wall
|
Gracias por responder
|
|
|
En línea
|
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
Movl me imagino que es algo de mover, por que si conozco Mov, peor no sé que pinta la L ahí. Es específica en los ensambladores con sintaxis AT&T. El l es un sufijo de tamaño que te dice que está trabajando con dwords. Para cambiar el tamaño, hay que cambiar el sufijo... b = byte w = word l = dword q = qword Salu10.
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Movl me imagino que es algo de mover, por que si conozco Mov, peor no sé que pinta la L ahí. Es específica en los ensambladores con sintaxis AT&T. El l es un sufijo de tamaño que te dice que está trabajando con dwords. Para cambiar el tamaño, hay que cambiar el sufijo... b = byte w = word l = dword q = qword Salu10. Tenia entendido que AT&T y Intel eran los mismos, y sin embargo en Intel creo que hay otros xDD Saludos
|
|
|
En línea
|
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
Tenia entendido que AT&T y Intel eran los mismos, y sin embargo en Intel creo que hay otros xDD Parameter Size
AT&T: Mnemonics are suffixed with a letter indicating the size of the operands (e.g., "q" for qword, "l" for dword, "w" for word, and "b" for byte)
Intel: Derived from the name of the register that is used (e.g., eax, ax, al) Fuente: WikipediaSalu10.
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Tenia entendido que AT&T y Intel eran los mismos, y sin embargo en Intel creo que hay otros xDD Parameter Size
AT&T: Mnemonics are suffixed with a letter indicating the size of the operands (e.g., "q" for qword, "l" for dword, "w" for word, and "b" for byte)
Intel: Derived from the name of the register that is used (e.g., eax, ax, al) Fuente: WikipediaSalu10. Grax por la info Saludos
|
|
|
En línea
|
|
|
|
|
|