Article View: pl.comp.lang.asm
Article #2199Re: Równie prosta zagadka
From: Andrzej Grażyński
Date: Tue, 13 Apr 2010 15:37
Date: Tue, 13 Apr 2010 15:37
72 lines
2317 bytes
2317 bytes
Bernard pisze:
> On 2010-04-10 21:42, Andrzej Grażyński wrote:
>> Andrzej Grażyński pisze:
>>> Dane jest pole o długości L bajtów. Odrócić kolejność bajtów w tym polu.
>>>
>>> Wskazówka: czy SWAPB może się tu do czegoś przydać?
>>
>>
>>
>>
>> Co sądzicie o tym? (nie testowałem)
>
> No to potestujmy. Przyjmijmy ECX równe 7 i wektor bajtów o wartościach
> 1, 2, 3, 4, 5, 6, 7.
>
>
>> CLD
> Zbędne wg ABI.
>> ADD ECX,4
> ECX = 11
>> MOV EBX,7
>> AND EBX,ECX
> EBX = 3
>> SHR ECX,3
> ECX = 1
>> LEA EDI,[ESI+ECX-1]
Tym razem sprawdziłem:
CLD
LEA EDI,[ESI+ECX-4]
MOV EBX,ECX
ADD ECX,4
SHR ECX,3
JZ @@Partial
@@Loop:
LODSD
MOV EDX,[EDI]
BSWAP EAX
BSWAP EDX
STOSD
MOV [ESI-4],EDX
SUB EDI,8
LOOP @@Loop
@@Partial:
; być może ten kawałek można lepiej zrobić
AND EBX,7
JZ @@Done
TEST EBX,4
JNZ @@Done
;---------------------------
LEA EDI,[ESI+EBX-1]
MOV AL,[EDI]
MOVSB
MOV [ESI-1],AL
@@Done:
Zauważ, że "reszta" (@@Partial) ma zawsze długość od 0 do 3 i obywa się
najwyżej JEDNYM przestawieniem.
Na pewno NIE jest to prostsze ani czytelniejsze od zwykłego
przestawiania bajtów. Ale ciekawe jak z szybkością. Czy ktoś może
porównać z innymi przykładami wcześniej tu prezentowanymi?
Technical Details
Message-ID:
<hq234j$nih$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:
<hpiqg4$te8$2@news.onet.pl> <hpqkb8$o4i$1@news.onet.pl> <hpvns8$2hh$1@newsread1.aster.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: Andrzej Grażyński <grazynsk@petex.com.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Równie prosta zagadka Date: Tue, 13 Apr 2010 17:37:30 +0200 Organization: http://onet.pl Lines: 72 Message-ID: <hq234j$nih$1@news.onet.pl> References: <hpiqg4$te8$2@news.onet.pl> <hpqkb8$o4i$1@news.onet.pl> <hpvns8$2hh$1@newsread1.aster.pl> NNTP-Posting-Host: public-gprs86172.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1271173077 24145 91.94.210.66 (13 Apr 2010 15:37:57 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Tue, 13 Apr 2010 15:37:57 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) In-Reply-To: <hpvns8$2hh$1@newsread1.aster.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit