🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: optymalizacja

#260
From: Bogdan (bogdro)
Date: Fri, 19 May 2006 16:57
48 lines
2950 bytes
tosamo napisał(a):
> Ale takie cos :
> 
> mov DWORD PTR [Intermediate_Hash],067452301h
> mov DWORD PTR [Intermediate_Hash+4],0EFCDAB89h
> mov DWORD PTR [Intermediate_Hash+8],098BADCFEh
> mov DWORD PTR [Intermediate_Hash+12],010325476h
> mov DWORD PTR [Intermediate_Hash+16],0C3D2E1F0h
> 
> bedzie lepsze niz
> 
> mov eax,offset Intermediate_Hash
> mov DWORD PTR [eax],067452301h
> mov DWORD PTR [eax+4],0EFCDAB89h
> mov DWORD PTR [eax+8],098BADCFEh
> mov DWORD PTR [eax+12],010325476h
> mov DWORD PTR [eax+16],0C3D2E1F0h
> 
> ?  Wersja z rejestrem nie jest szybsza ?

 Wersja z rejestrem na pewno będzie wygodniejsza w pisaniu i w
utrzymaniu. Czy szybsza, to nie wiem. Jak miałbym zgadywać, to
powiedziałbym, że nie, bo podałeś grupy instrukcji typu:

	mov 	[zmienna], liczba

i

	mov	[eax], liczba

 Ten adres musi jednak kiedyś być obliczany, bo nie jest stały. A
pierwsza grupa instrukcji operuje na stałych adresach obliczonych i
wstawionych na sztywno przez kompilator czy linker (niemniej, są one
zakodowane na sztywno w programie). Poza tym, nie ukrywajmy, że jest
to o 1 instrukcję (mov eax,) mniej.

 Jeśli drugi fragment kodu wygląda w programie tak, jak tutaj, to
dodatkowo na korzyść *pierwszego* przemawia zwolnienie rejestru EAX do
obliczeń lub przechowywania jakiejś zmiennej oraz przede wszystkim
likwidacja zależności między co najmniej 2 instrukcjami, którą to
zależność gołym okiem widać w 2 pierwszych instrukcjach drugiej grupy:
mov eax, ... / mov [eax..], ...

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Technical Details
Message-ID: <e4kthl$25d$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <e4f5nl$rj4$1@inews.gazeta.pl> <e4ffrk$he5$1@nemesis.news.tpi.pl> <e4fi7h$q1b$1@inews.gazeta.pl> <e4hbi4$fpm$1@atlantis.news.tpi.pl> <e4it6m$c00$1@inews.gazeta.pl> <e4j148$kn7$1@inews.gazeta.pl> <e4k9m6$ogh$1@atlantis.news.tpi.pl> <e4kh6c$fp$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@bogdan.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: optymalizacja
Date: Fri, 19 May 2006 18:57:29 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 48
Message-ID: <e4kthl$25d$1@nemesis.news.tpi.pl>
References: <e4f5nl$rj4$1@inews.gazeta.pl> <e4ffrk$he5$1@nemesis.news.tpi.pl> <e4fi7h$q1b$1@inews.gazeta.pl> <e4hbi4$fpm$1@atlantis.news.tpi.pl> <e4it6m$c00$1@inews.gazeta.pl> <e4j148$kn7$1@inews.gazeta.pl> <e4k9m6$ogh$1@atlantis.news.tpi.pl> <e4kh6c$fp$1@inews.gazeta.pl>
NNTP-Posting-Host: actz222.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1148057974 2221 83.11.79.222 (19 May 2006 16:59:34 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Fri, 19 May 2006 16:59:34 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.2 (X11/20060420)
In-Reply-To: <e4kh6c$fp$1@inews.gazeta.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit