0x08048566
0x0804856c
0x08048571
子函数:
0x08048622 <_ZN5CTest4fun1Ev+0>: push %ebp
0x08048623 <_ZN5CTest4fun1Ev+1>: mov %esp,%ebp
.....
0x0804862e <_ZN5CTest4fun1Ev+12>: leave
0x0804862f <_ZN5CTest4fun1Ev+13>: ret (对栈有pop)
-2) 汇编语句理解
%esp (%寄存器名) 都是在指寄存器的的值是多少,这个值是一个地址值.
一般都是读出寄存器对应地址的内容. gdb x/16w 0xxxxx
pushl 0x8049924
把0x8049924地址对应的内容入栈.
push %ebp
把寄存器本身的地址入栈.
movl $0xa, (%eax)
把0xa付给%eax对应地址所指向的内容.
movl 0x8(%ebp) %eax
把%ebp的地址值加上8,在把此地址对应的内容覆给%eax做为地址.
movl $0x0,0xfffffffc(%ebp)
把0 赋值给%ebp对应的地址减去4后所对应的地址.
Note: GCC编译的c++ code.