leave y movl

Iniciado por @synthesize, 2 Julio 2010, 00:28 AM

0 Miembros y 1 Visitante están viendo este tema.

@synthesize

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)

bizco

http://asm.sourceforge.net/articles/linasm.html#Syntax -> para el movl

leave = mov esp, ebp
            pop ebp



@synthesize

Cita de: ctlon en  2 Julio 2010, 00:43 AM
http://asm.sourceforge.net/articles/linasm.html#Syntax -> para el movl

leave = mov esp, ebp
            pop ebp



Gracias por responder  :)

nicolas_cof

Cita de: Daemon Freedom en  2 Julio 2010, 00:28 AM
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.

Debci

Cita de: nicolas_cof en  6 Julio 2010, 15:54 PM
Cita de: Daemon Freedom en  2 Julio 2010, 00:28 AM
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

nicolas_cof

Cita de: Debci en  6 Julio 2010, 16:00 PMTenia entendido que AT&T y Intel eran los mismos, y sin embargo en Intel creo que hay otros xDD

CitarParameter 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: Wikipedia

Salu10.

Debci

Cita de: nicolas_cof en  6 Julio 2010, 16:18 PM
Cita de: Debci en  6 Julio 2010, 16:00 PMTenia entendido que AT&T y Intel eran los mismos, y sin embargo en Intel creo que hay otros xDD

CitarParameter 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: Wikipedia

Salu10.
Grax por la info ;D

Saludos