Mail Archives: djgpp/2002/02/11/08:16:40
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: | <slrna6ehga.9j6.kala@ganga.sankya.com>
|
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 <izecksohn AT yahoo DOT com> 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
- Raw text -