delorie.com/archives/browse.cgi   search  
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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019