🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1306

gcc - wyrownanie esp w main?

#1306
From: Jedrzej Dudkiewicz
Date: Fri, 06 Jul 2007 14:52
28 lines
1770 bytes
Program w C w pliku x.c:

int main() { }

po gcc -S -O3 x.c daje taki fragment:

  6 main:
  7     pushl   %ebp
  8     movl    %esp, %ebp
  9     subl    $8, %esp
 10     andl    $-16, %esp
 11     subl    $16, %esp
 12     leave
 13     ret

Ja to rozumiem tak, że linie 9 - 11 to jest wyrównanie stosu do potęgi 4.
Tylko po co te odejmowania? Skoro stos rośnie w dół, to samo andl przesuwa
adres nie wyżej niż andl. Nie jest to raczej rezerwowanie miejsca na żadne
zmienne - nigdy nie widziałem, aby to miejsce było wykorzystane (pewnie mało
widziałem). Szukałem jakichś informacji po sieci, ale nie znalazłem nic
prócz tego, że to jest wyrównanie, raz tylko określone jako "strange".

Z góry dzięki za odpowiedź,

JD

PS. Próbuję szukać czegoś w źródłach gcc, ale... Tonący może i chwyta się
brzytwy, ale wcześniej niż źródeł gcc. Tak mi się wydaje :)
Technical Details
Message-ID: <f6ll1j$ktc$1@news.supermedia.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.supermedia.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.supermedia.pl!not-for-mail
From: "Jedrzej Dudkiewicz" <jedrzej.dudkiewicz@poczta.interia.pl>
Newsgroups: pl.comp.lang.asm
Subject: gcc - wyrownanie esp w main?
Date: Fri, 6 Jul 2007 16:52:48 +0200
Organization: SuperMedia - http://www.sm.pl
Lines: 29
Message-ID: <f6ll1j$ktc$1@news.supermedia.pl>
NNTP-Posting-Host: 212.180.147.34
Mime-Version: 1.0
X-Trace: news.supermedia.pl 1183733619 21420 212.180.147.34 (6 Jul 2007 14:53:39 GMT)
X-Complaints-To: abuse@supermedia.pl
NNTP-Posting-Date: Fri, 6 Jul 2007 14:53:39 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1896
X-Newsreader: Microsoft Outlook Express 6.00.2800.1807
X-Priority: 3
X-MSMail-Priority: Normal
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit