Article View: pl.comp.lang.asm
Article #2197Re: Równie prosta zagadka
From: Andrzej Grażyński
Date: Tue, 13 Apr 2010 15:27
Date: Tue, 13 Apr 2010 15:27
76 lines
2499 bytes
2499 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]
PUSH 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:
POP EBX
; być może ten kawałek można lepiej zrobić
AND EBX,7
JZ @@Done
TEST EBX,4
JNZ @@Done
;---------------------------
MOV AL,[ESI]
LEA EDI,[ESI+EBX-1]
MOV AH,[EDI]
STOSB
MOV [ESI],AH
@@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:
<hq22h3$lnm$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!num2.nntp.dca.giganews.com!num1.nntp.dca.giganews.com!number.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news.nask.pl!news.nask.org.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!num2.nntp.dca.giganews.com!num1.nntp.dca.giganews.com!number.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news.nask.pl!news.nask.org.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:27:06 +0200 Organization: http://onet.pl Lines: 76 Message-ID: <hq22h3$lnm$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 1271172453 22262 91.94.210.66 (13 Apr 2010 15:27:33 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Tue, 13 Apr 2010 15:27:33 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) In-Reply-To: <hpvns8$2hh$1@newsread1.aster.pl> Bytes: 2432 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit