Re: one simple question

2004-03-04 Thread Cordula's Web
> > > 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$0xfff0,%esp
> >
> > gcc2_compiled.:
> > .text
> > .p2align 2,0x90
> > .globl main
> > .typemain,@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/

___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: one simple question

2004-03-04 Thread bear
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 <[EMAIL PROTECTED]> 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$0xfff0,%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
>   .typemain,@function
> main:
>   pushl %ebp
>   movl %esp,%ebp
>   xorl %eax,%eax
>   jmp .L2
>   .p2align 2,0x90
> .L2:
>   leave
>   ret
> .Lfe1:
>   .sizemain,.Lfe1-main
>   .ident  "GCC: (GNU) c 2.95.4 20020320 [FreeBSD]"
> 
> 
> 
> No such thing as:
> 
> and$0xfff0,%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
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: one simple question

2004-03-04 Thread Cordula's Web
> 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$0xfff0,%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
.typemain,@function
main:
pushl %ebp
movl %esp,%ebp
xorl %eax,%eax
jmp .L2
.p2align 2,0x90
.L2:
leave
ret
.Lfe1:
.sizemain,.Lfe1-main
.ident  "GCC: (GNU) c 2.95.4 20020320 [FreeBSD]"



No such thing as:

and$0xfff0,%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/

___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: one simple question

2004-03-03 Thread Chris Pressey
On Wed, 3 Mar 2004 18:13:43 +
chungwei Hsiung <[EMAIL PROTECTED]> wrote:

> Hello..
>   I have a simple question, but I am not sure what the answer is. If
>   anyone can possibly help me, it is really appreciated. 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$0xfff0,%esp
> 
> best regards
> Chungwei

Hi Chungwei,

I believe that instruction is used to align the stack pointer to a
16-byte boundary, for efficiency.

However, this is just a guess, based on some discussions I've seen.
I don't know for certain.

You may have better luck asking on [EMAIL PROTECTED]

-Chris
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


one simple question

2004-03-03 Thread chungwei Hsiung
Hello..
  I have a simple question, but I am not sure what the answer is. If anyone can 
possibly help me, it is really appreciated.
  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$0xfff0,%esp

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