🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Równie prosta zagadka

#2188
From: Andrzej Grażyński
Date: Fri, 09 Apr 2010 23:09
75 lines
2691 bytes
Wojciech Muła pisze:
> Bernard <bernard@earth.net> wrote:
> 
>> On 2010-04-07 22:38, Andrzej Grażyński wrote:
>>> 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ć?
>> SWAPB może się przydać, ale więcej z tym kłopotu niż pożytku z powodu 
>> konieczności obsługi przypadków, gdy rozmiar wektora jest poniżej 4 lub 
>> nie jest wielokrotnością 4.
> 
> Przede wszystkim BSWAP. :)
> 
> I wcale nie tak skomplikowanie, bo trzeba brać pod uwagę końcówkę,
> ale niepodzielną przez 8:
> 
> 	mov esi, adres
> 	mov ecx, długość
> 	lea edi, [esi + ecx - 4]
> 	test ecx, 0xfffffff8
> 	jnz zamiana_bajt_po_bajcie
> 	and ecx, 0xfffffff8
> .pętla:
> 	mov eax, [esi]
> 	mov ebx, [edi]
> 	bswap eax
> 	bswap ebx
> 	mov [edi], eax
> 	mov [esi], ebx
> 	add esi, 4
> 	sub edi, 4
> 	sub ecx, 8
> 	jnz .pętla
> 
> 	mov ecx, długość
> 	and ecx, 0x7
> 	jnz .koniec 
> 
> 	sub esi, 3	; tutaj tylko korekta
> 	add edi, 3	; wskaźników
> 	
> .zamiana_bajt_po_bajcie:
> 	tu Twój kod
> .koniec:
> 
> W podobny sposób można wykorzystać mój ulubiony rozkaz PSHUFB - przy
> jego użyciu w jednej iteracji wymieniałoby się 16 bajtów. :) Jutro
> się tym trochę pobawię, to wrzucę na grupę jakieś benchmarki.
> 
> w.
> 

LEA EDI,[ESI+ECX-1]
MOV EDX,7
AND EDX,ECX
SETNZ DL
SHR ECX,3
ADD ECX,EDX
JZ  @@Ready



CLD
@Loop:

LODSD
MOV  EDX,[EDI]
BSWAP EAX
BSWAP EDX
STOSD
MOV [ESI-4],EDX
SUB EDI,8
LOOP @@Loop

@@Ready:
Technical Details
Message-ID: <hpoc45$loe$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!border1.nntp.ams3.giganews.com!border1.nntp.ams2.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!news.unit0.net!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail
References: <hpiqg4$te8$2@news.onet.pl> <hpmpsm$ga1$1@newsread1.aster.pl> <20100409143730.c91d4f14.wojciech_mula@poczta.null.onet.pl.invalid>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!border1.nntp.ams3.giganews.com!border1.nntp.ams2.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!news.unit0.net!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: Sat, 10 Apr 2010 01:09:43 +0200
Organization: http://onet.pl
Lines: 82
Message-ID: <hpoc45$loe$1@news.onet.pl>
References: <hpiqg4$te8$2@news.onet.pl> <hpmpsm$ga1$1@newsread1.aster.pl> <20100409143730.c91d4f14.wojciech_mula@poczta.null.onet.pl.invalid>
NNTP-Posting-Host: public-gprs135767.centertel.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1270854600 22286 79.162.125.152 (9 Apr 2010 23:10:00 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Fri, 9 Apr 2010 23:10:00 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
In-Reply-To: <20100409143730.c91d4f14.wojciech_mula@poczta.null.onet.pl.invalid>
Bytes: 2707
X-Original-Bytes: 2652
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit