Skip site navigation (1)Skip section navigation (2)
Date:      Thu,  4 Mar 2004 17:57:18 +0100 (CET)
From:      Cordula's Web <cpghost@cordula.ws>
To:        skuma17@yahoo.com
Cc:        freebsd-questions@freebsd.org
Subject:   Re: one simple question
Message-ID:  <20040304165718.6FD9740822@fw.farid-hajji.net>
In-Reply-To: <20040304130821.96170.qmail@web9907.mail.yahoo.com> (message from bear on Thu, 4 Mar 2004 05:08:21 -0800 (PST))
References:  <20040304130821.96170.qmail@web9907.mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> > > 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
> >
> > gcc2_compiled.:
> > .text
> > 	.p2align 2,0x90
> > .globl main
> > 		.type		 main,@function
> > main:
> > 	pushl %ebp
> > 	movl %esp,%ebp
> > 	xorl %eax,%eax
> > 	jmp .L2
> > 	.p2align 2,0x90
> > .L2:
> 
> 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

Ah, so it's being introduced by the assembler, not the compiler.
That is perhaps the effect of alignement instructions like

> > .text
> > 	.p2align 2,0x90

this and similar defaults.

> 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.

That may very well be the case. Considering that a cache line is also
a few words worth, it may be sensible to start with an aligned stack
frame too.

> best regards,
> Chungwei

-- 
Cordula's Web. http://www.cordula.ws/



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