🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: string reverse

#866
From: Bernard
Date: Tue, 05 Dec 2006 12:44
77 lines
3047 bytes
mikezum wrote:
>> Przecierz w asemblerze nie ma rzutowania,
>> wydaje mi sie ze to taki 'skrot myslowy'.
>> Poczekajmy az OP doprecyzuje czy chodzi mu
>> o zmiane kolejnosci bajtow, czy cos z pogranicza
>> endianowosci, czy tez jeszcze cos innego.
> Panowie, a czy ktos powiedzial, ze ja pisze tylko w czystym assemblerze ?
> To po pierwsze :)
> Rzutowanie, czyli traktowanie liczby zapisanej w postaci intelowskiej na
> postac "zwykla" cokolwiek mialoby to oznaczac

Możesz zdefiniować pojęcia "postać intelowska" i "postać zwykła"?

> Z tym sobie juz powradzilem poradzilem
> procedure ValueToValueIntel(var BufferIn;var BufferOut;const
> BufferLen:integer);

Czemu var w parametrach?

>   var
>       pBufferIn:pByte;
>       pBufferOut:pByte;
>   begin
>   If BufferLen =0 then exit;
>   pBufferIn:=@BufferIn;
>   pBufferOut:=@BufferOut;
>   Inc(pBufferOut,BufferLen-1);
>   asm
>     PUSH EAX
>     PUSH EBX
>     PUSH ECX
>     MOV ECX,BufferLen
>     LEA EBX,pBufferIn
>     MOV EBX,[EBX]
>     LEA EDX,pBufferOut
>     MOV EDX,[EDX]
>     @@Loop:
> 
>     MOV EAX,[EBX]
>     MOV [EDX-3],EAX
>     inc EBX
>     inc EBX
>     inc EBX
>     inc EBX
>     DEC EDX
>     DEC EDX
>     DEC EDX
>     DEC EDX
>     DEC ECX
>     DEC ECX
>     DEC ECX
>     DEC ECX
>     JNZ @@Loop
>     POP ECX
>     POP EBX
>     POP EAX
>   end;
> end;
> Oczywiscie dla uproszczenia liczby przesylane beda 8 bajtowe czyli int64

Oczywiście Twój kod nie działa tak, jak sobie wyobrażasz, tzn. nie 
zmienia kolejności bajtów i w dodatku zamazuje inne dane.

> Nie wiem tylko czy lepiej dac cztery razy inc czy raz add ( coi bedzie
> szybsze) ?

Dodawanie i odejmowanie. Jedna instrukcja będzie tutaj szybsza niż cztery.

> Druga sprawa, czy ktos wie dlaczego dwie instrukcje czyli bsr i bsf zwracaj
> a ten sam wynik ???
> MOV EAX, 1
> bsr EBX,EAX   // EBX =7 przeciez to jest Bit Scan Reverse ???!!
> 
> MOV EAX, 1
> bsf EBX,EAX   // EBX =7   przeciez to jest Bit Scan Forward ???!!

Pewnie dlatego, że tak powinno być zgodnie z definicją tych instrukcji.
Technical Details
Message-ID: <el3pd5$2vn$1@achot.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!not-for-mail
References: <8j3qqhx2oh2t.16ahj7wfz15t2$.dlg@40tude.net> <ekrivu$srf$1@news.onet.pl> <ekrl05$9tt$1@inews.gazeta.pl> <1fa3760oiybh8.7xk0unla13io.dlg@40tude.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!not-for-mail
From: Bernard <bernard@earth.net>
Newsgroups: pl.comp.lang.asm
Subject: Re: string reverse
Date: Tue, 05 Dec 2006 13:44:09 +0100
Organization: http://news.icm.edu.pl/
Lines: 77
Message-ID: <el3pd5$2vn$1@achot.icm.edu.pl>
References: <8j3qqhx2oh2t.16ahj7wfz15t2$.dlg@40tude.net> <ekrivu$srf$1@news.onet.pl> <ekrl05$9tt$1@inews.gazeta.pl> <1fa3760oiybh8.7xk0unla13io.dlg@40tude.net>
NNTP-Posting-Host: p310-gbm.ii.pw.edu.pl
Mime-Version: 1.0
X-Trace: achot.icm.edu.pl 1165322469 3063 194.29.168.171 (5 Dec 2006 12:41:09 GMT)
X-Complaints-To: abuse@icm.edu.pl
NNTP-Posting-Date: Tue, 5 Dec 2006 12:41:09 +0000 (UTC)
In-Reply-To: <1fa3760oiybh8.7xk0unla13io.dlg@40tude.net>
User-Agent: Thunderbird 1.5.0.8 (Windows/20061025)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit