Article View: pl.comp.lang.asm
Article #2359Re: ADD SUB kontra INC DEC
From: Michoo
Date: Sat, 24 Jul 2010 16:51
Date: Sat, 24 Jul 2010 16:51
59 lines
2590 bytes
2590 bytes
yesma pisze: > Michoo pisze: >> Jeżeli robisz operacje na liczbach złożonych z 2 słów procesora to >> normalnie inkrementację zrobisz tak (eax,ebx - liczba): >> add ebx,1 >> adc eax,0 >> > > Chyba zaczynam coś rozumieć pierwsze add może ustawić CF a INC akurat > tej flagi nie ustawia, adc ją dodaje > Dokładnie. >> a przy inc będzie to coś takiego: >> inc ebx >> jno skip ;jz chyba też zadziała dla unsigned >> inc eax >> skip: ... >> >> z dec podobnie >> > > ale tutaj chyba nie rozumiem , jno skip czy jo skip? Zwiększ jeżeli był overflow, czyli Jeżeli Nie wystąpił Overflow to nie zwiększaj. To jest ogólna metoda tworzenia warunków w assemblerze - mamy w C: [...] --i; if(i==0)//JEŻELI WARUNEK SPEŁNIONY - wykonaj kod foo(); foo_bar(); [...] i kompilujemy to: dec edx jnz skip ;JEŻELI WARUNEK NIESPEŁNIONY - omiń kod call foo skip: call foo_bar zaoszczędzamy w ten sposób jeden skok w przypadku gdy warunek jest spełniony - po zrealizowaniu bloku if przechodzimy od razu do następnej instrukcji. W przypadku if ... else ... na końcu bloku if i tak musimy wykonać skok bezwarunkowy, więc stosuje się inne optymalizacje: if(a) foo(); else bar(); jest tożsame z if(!a) bar(); else foo(); więc możemy zamienić kolejność bloków gdy jeden warunek liczy się prościej niż drugi. jako pierwszy dajemy ten blok który się częściej wykona - na starych x86 (i na risc) często skok to 2 cykle, brak skoku - 1) jeżeli są równie prawdopodobne to jako pierwszy dajemy blok, który jest krótszy - żeby cel skoku przy ominięciu był w L1 -- Pozdrawiam Michoo
Technical Details
Message-ID:
<i2f5m4$36f$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailReferences:
<i24eks$ec7$1@inews.gazeta.pl> <i292oj$jgo$1@newsread1.aster.pl> <i29va9$gkc$1@inews.gazeta.pl> <i2a8p8$soh$1@news.onet.pl> <i2ac42$4s6$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: Michoo <michoo_news@vp.pl> Newsgroups: pl.comp.lang.asm Subject: Re: ADD SUB kontra INC DEC Date: Sat, 24 Jul 2010 18:51:42 +0200 Organization: http://onet.pl Lines: 59 Message-ID: <i2f5m4$36f$1@news.onet.pl> References: <i24eks$ec7$1@inews.gazeta.pl> <i292oj$jgo$1@newsread1.aster.pl> <i29va9$gkc$1@inews.gazeta.pl> <i2a8p8$soh$1@news.onet.pl> <i2ac42$4s6$1@inews.gazeta.pl> NNTP-Posting-Host: chello087206113207.chello.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1279990276 3279 87.206.113.207 (24 Jul 2010 16:51:16 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Sat, 24 Jul 2010 16:51:16 +0000 (UTC) User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706) In-Reply-To: <i2ac42$4s6$1@inews.gazeta.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit