Greg 'groggy' Lehey wrote:

On Friday, 5 March 2004 at 13:43:04 -0500, Chungwei Hsiung wrote:


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.



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.

Greg
--
Note: I discard all HTML mail unseen.
Finger [EMAIL PROTECTED] for PGP public key.
See complete headers for address and phone numbers.


Hello.. thank you very much for the reply
I actually don't know how to use the optimization. I just compile it with gcc 3.2.2, and use gdb to disassemble main to get this assembly. Is it possible I can get the non-redundent output?
here is the code I compile..


#include <stdio.h>


int main(void) { char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; execve(name[0], name, NULL); return(0); }

best regards
Chungwei
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to