Strange instructions in compiler output (was: A simple question)
Greg 'groggy' Lehey
grog at FreeBSD.org
Fri Mar 5 15:32:15 PST 2004
On Friday, 5 March 2004 at 13:43:04 -0500, Chungwei Hsiung wrote:
> 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.
This is probably because you didn't optimize the output. You'd be
surprised how many redundant instructions the compiler puts in under
these circumstances. Try optimizing and see what the code looks like.
If this *was* done with optimization, let's see the source code.
Note: I discard all HTML mail unseen.
Finger grog at FreeBSD.org for PGP public key.
See complete headers for address and phone numbers.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20040306/f72da987/attachment.bin
More information about the freebsd-hackers