one simple question

bear skuma17 at yahoo.com
Thu Mar 4 05:08:22 PST 2004


thank you very much for the reply
yes and I am using gcc 3.2.2
if you "gdb" the executable and "disassemble main"
you will see the line like that
but if you use gcc -S something.s something.c
it won't appear in the assembly code

and I google around, I think it does the alignment for optimization
purpose, in that case the memory access will be faster according to the
article.

best regards,
Chungwei

--- Cordula's Web <cpghost at cordula.ws> wrote:
> > I compile a test C file. I notice there are a few lines at the
> > beginning of the assembly code. I want to know what it means, but
> > can't figure out one of them. Can anyone tell me what the
> > following line does please?
> > 
> > and    $0xfffffff0,%esp
> 
> Hmmm, when I compile the simplest possible C file:
> 
> -------------------------------
> int
> main (int argc, char *argv[])
> {
>   return 0;
> }
> --------------------------------
> 
> I get this:
> 
> --------------------------------
> 	.file	"test1.c"
> 	.version	"01.01"
> gcc2_compiled.:
> .text
> 	.p2align 2,0x90
> .globl main
> 		.type		 main, at function
> main:
> 	pushl %ebp
> 	movl %esp,%ebp
> 	xorl %eax,%eax
> 	jmp .L2
> 	.p2align 2,0x90
> .L2:
> 	leave
> 	ret
> .Lfe1:
> 		.size		 main,.Lfe1-main
> 	.ident	"GCC: (GNU) c 2.95.4 20020320 [FreeBSD]"
> 
> --------------------------------
> 
> No such thing as:
> 
> and    $0xfffffff0,%esp
> 
> Are you using gcc 3.3.x?
> 
> Anyway, this code looks like it would align the stack
> the stack pointer...
> 
> > best regards
> > Chungwei
> 
> -- 
> Cordula's Web. http://www.cordula.ws/
> 


=====
bear


More information about the freebsd-questions mailing list