background image

There is absolutely no warranty for GDB.  Type "show warranty" for 
details.

This GDB was configured as "i386-asianux-linux-gnu"...(no debugging 
symbols found)...Using host libthread_db library 
"/lib/tls/libthread_db.so.1".

(gdb) disassemble main          ---> 反汇编 main 函数

Dump of assembler code for function main:

0x08048310 <main+0>:    push   %ebp   --->ebp 寄存器内容压栈,

即保存 main 函数的上级
调用函数的栈基地址

0x08048311 <main+1>:    mov    %esp,%ebp  ---> esp 值赋给

ebp,设置 main 函数
的栈基址

0x08048313 <main+3>:    sub    $0x8,%esp  --->通过 ESP-8 来分配

字节堆栈空间

0x08048316 <main+6>:    and    $0xfffffff0,%esp --->使栈地址 16

字节对齐

0x08048319 <main+9>:    mov    $0x0,%eax  --->  无意义

0x0804831e <main+14>:   sub    %eax,%esp  --->  无意义

0x08048320 <main+16>:   mov    $0x0,%eax   ---> 设置函数返回值
0

0x08048325 <main+21>:   leave     --->将 ebp 值赋给 esppop 

前栈内的上级函数栈的基地址
给 ebp,恢复原栈基址.
<!--[if !
supportLineBreakNewLine
]-->
<!--[endif]-->

0x08048326 <main+22>:   ret   ---> main 函数返回,回到上级调用.

0x08048327 <main+23>:   nop

End of assembler dump.