🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Równie prosta zagadka

#2199
From: Andrzej Grażyński
Date: Tue, 13 Apr 2010 15:37
72 lines
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-mail
References: <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