A simple question
Chungwei Hsiung
skuma17 at yahoo.com
Fri Mar 5 10:42:37 PST 2004
Hello..
I am super new to this list, and I have a simple question that I don't
know why it does that. I have a simple test program. I compile it, and
gdb to disassemble main. I got the following..
0x80481f8 <main>: push %ebp
0x80481f9 <main+1>: mov %esp,%ebp
0x80481fb <main+3>: sub $0x8,%esp
0x80481fe <main+6>: and $0xfffffff0,%esp
0x8048201 <main+9>: mov $0x0,%eax
0x8048206 <main+14>: sub %eax,%esp
0x8048208 <main+16>: movl $0x804a6ce,0xfffffff8(%ebp)
0x804820f <main+23>: movl $0x0,0xfffffffc(%ebp)
0x8048216 <main+30>: sub $0x4,%esp
0x8048219 <main+33>: push $0x0
0x804821b <main+35>: lea 0xfffffff8(%ebp),%eax
0x804821e <main+38>: push %eax
0x804821f <main+39>: pushl 0xfffffff8(%ebp)
0x8048222 <main+42>: call 0x804823c <execve>
0x8048227 <main+47>: add $0x10,%esp
0x804822a <main+50>: mov $0x0,%eax
0x804822f <main+55>: leave
0x8048230 <main+56>: ret
I don't know if at line 5, we move zero to %eax. why do we need to sub
%eax, %esp? why do we need to substract 0 from the stack pointer??
Any help is really appreciated.
best regards
Chungwei
More information about the freebsd-hackers
mailing list