Article View: pl.comp.lang.asm
Article #158Re: add esp,12
From: Daniel P.
Date: Wed, 15 Mar 2006 23:16
Date: Wed, 15 Mar 2006 23:16
34 lines
2345 bytes
2345 bytes
Użytkownik kuba <kuba1@o2.pl> w wiadomości <dva3ec$nkq$1@nemesis.news.tpi.pl> napisał: > mam nast. fragment kodu: > > push 10 ; -> 4[B] > push offset lancuch_zn ; -> 4[B] > push 1 ; -> 4[B] > call _write > add esp,12 > > ostatnia linia ponoc usuwa parametry ze stosu. Nie mam pojecia jak i > dlaczego i generalnie o co chodzi z tym usuwaniem w ostatniej linii, > dlaczego tzreba 12 dodac??? Dlaczego dodać 12? Bo odłożyłeś 12 bajtów danych. Każdy push odkłada 4 B (rozmiar rejestru 32 bitowego). O co chodzi z tym usuwaniem? Co robi komenda "pop eax"? Przesyła do rejestru eax cztery bajty ze stosu, po czym aktualizuje wskaźnik stosu (esp - sp od stack pointer). Gdy wysyłasz coś na stos wskaźnik ten zmniejsza się o ilość danych (stos rośnie w dół), które wysyłasz (najczęściej będą to 4B, lecz nie zawsze musi tak być). Gdy pobierasz dane ze stosu wskaźnik ten zwiększa się o ilość danych, które z niego pobierasz (4B). Jeżeli dane ze stosu nie są Ci potrzebne, wystarczy, że samodzielnie zwiększysz wskaźnik stosu o potrzebną wartość a będzie to adekwatne do pobrania ze stosu danych (pop) z tym, że nie będziesz tych danych miał. Dlaczego się to stosuje? To co odłożyłeś na stos _musisz_ z niego pobrać. Jeżeli nie jest Ci to potrzebne wystarczy, że zaktualizujesz sam wskaźnik - rezultat będzie ten sam. Aby lepiej to zrozumieć pobaw się jakimś debugerem - bez tego może być ciężko. Popatrz jak są wywoływane procedury i jak się wtedy zmienia esp.
Technical Details
Message-ID:
<dva797$3lo$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<dva3ec$nkq$1@nemesis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Daniel P." <nako@go2.i.do.not.like.spam.pl> Newsgroups: pl.comp.lang.asm Subject: Re: add esp,12 Date: Wed, 15 Mar 2006 23:16:55 +0000 (UTC) Organization: tp.internet - http://www.tpi.pl/ Lines: 34 Message-ID: <dva797$3lo$1@atlantis.news.tpi.pl> References: <dva3ec$nkq$1@nemesis.news.tpi.pl> NNTP-Posting-Host: plato.ksiezyc.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1142464615 3768 217.97.185.2 (15 Mar 2006 23:16:55 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 15 Mar 2006 23:16:55 +0000 (UTC) User-Agent: slrn/0.9.8.1 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit