Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Mar 2004 10:02:09 +1030
From:      Greg 'groggy' Lehey <grog@FreeBSD.org>
To:        Chungwei Hsiung <skuma17@yahoo.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Strange instructions in compiler output (was: A simple question)
Message-ID:  <20040305233209.GO67801@wantadilla.lemis.com>
In-Reply-To: <4048CA38.6040203@yahoo.com>
References:  <4048CA38.6040203@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--qjSZefE6w0iW6XmQ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

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 grog@FreeBSD.org for PGP public key.
See complete headers for address and phone numbers.

--qjSZefE6w0iW6XmQ
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (FreeBSD)

iD8DBQFASQ35IubykFB6QiMRArLTAJ9/Bo6t3DihnbzsYo6amWfgJjSBtwCgqQT2
OPwq60Xv3oG52vithVRE++Q=
=qAQs
-----END PGP SIGNATURE-----

--qjSZefE6w0iW6XmQ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040305233209.GO67801>