X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f From: kala AT sankya DOT com (Babu Kalakrishnan) Newsgroups: comp.os.msdos.djgpp Subject: Re: Assembly Question: Date: Mon, 11 Feb 2002 09:48:18 +0530 Lines: 48 Message-ID: References: <000a01c1b296$f2b0dc00$34e2a0c8 AT rjo DOT virtua DOT com DOT br> NNTP-Posting-Host: ppp-200-10-41.bng.vsnl.net.in (203.200.10.41) X-Trace: fu-berlin.de 1013431655 47347629 203.200.10.41 (16 [76750]) X-Orig-Path: kala User-Agent: slrn/0.9.6.2 (Linux) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com On Sun, 10 Feb 2002 21:56:07 -0300, Pedro Izecksohn wrote: > > Hello to you all, > > My question isn't really useful, but I would like to understand: > > When "gcc asmtest.c -S" the code below: > >void test1 () { >} > >void main () { >test1(); >} > > gcc makes the following .S code: (Without the lines numbers.) > >1 .file "asmtest.c" >2 .section .text >3 .p2align 4 >4 .globl _test1 >5 _test1: >6 pushl %ebp >7 movl %esp, %ebp >8 popl %ebp >9 ret >10 .p2align 4 >11 .globl _main >12 _main: >13 pushl %ebp >14 movl %esp, %ebp >15 subl $8, %esp >16 andl $-16, %esp >17 call _test1 >18 movl %ebp, %esp >19 popl %ebp >20 ret >21 .ident "GCC: (GNU) 3.0.3" > > What is the purpose of the lines 15 and 16 ? These are obviously meant for ensuring 16 byte stack alignment. I'm not sure why both statements are present though. May be the first one is part of the entry code (to correct for the pushed return address and pushed ebp occupying 8 bytes) - and the second is a part of the function call code (ensuring 16 byte alignment before calling the function). BK