🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: ADD SUB kontra INC DEC

#2359
From: Michoo
Date: Sat, 24 Jul 2010 16:51
59 lines
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-mail
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>

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