Thread View: pl.comp.lang.asm
5 messages
5 total messages
Started by =?ISO-8859-2?Q?A
Fri, 09 Apr 2010 23:00
Podobna zagadka
Author: =?ISO-8859-2?Q?A
Date: Fri, 09 Apr 2010 23:00
Date: Fri, 09 Apr 2010 23:00
3 lines
121 bytes
121 bytes
Dane jest pole o adresie pocz�tku w ESI i d�ugo�ci w bajtach w ECX. Nale�y odwr�ci� kolejno�� BIT�W.
Re: Podobna zagadka
Author: Bernard
Date: Sun, 11 Apr 2010 22:21
Date: Sun, 11 Apr 2010 22:21
23 lines
474 bytes
474 bytes
On 2010-04-09 23:00, Andrzej Gra�y�ski wrote: > Dane jest pole o adresie pocz�tku w ESI i d�ugo�ci w bajtach w ECX. > Nale�y odwr�ci� kolejno�� BIT�W. xlop: lodsb mov ah, al and ax, 0x55aa shr al, 1 aad 2 mov ah, al and ax, 0x33cc shr al, 2 aad 4 ror al, 4 xchg al, [esi + ecx - 2] ; i tu to samo, co powy�ej - 9 instrukcji mov [esi - 1], al sub ecx, 2 ja xlop razem 23 instrukcje na 1 obieg p�tli
Re: Podobna zagadka
Author: =?ISO-8859-2?Q?A
Date: Sun, 11 Apr 2010 23:37
Date: Sun, 11 Apr 2010 23:37
26 lines
621 bytes
621 bytes
Bernard pisze: > On 2010-04-09 23:00, Andrzej Gra�y�ski wrote: >> Dane jest pole o adresie pocz�tku w ESI i d�ugo�ci w bajtach w ECX. >> Nale�y odwr�ci� kolejno�� BIT�W. > > xlop: > lodsb > mov ah, al > and ax, 0x55aa > shr al, 1 > aad 2 > mov ah, al > and ax, 0x33cc > shr al, 2 > aad 4 > ror al, 4 > xchg al, [esi + ecx - 2] > ; i tu to samo, co powy�ej - 9 instrukcji > mov [esi - 1], al > sub ecx, 2 > ja xlop > > razem 23 instrukcje na 1 obieg p�tli A nie lepiej u�y� BT, BTS i BTR?
Re: Podobna zagadka
Author: =?ISO-8859-2?Q?A
Date: Mon, 12 Apr 2010 16:14
Date: Mon, 12 Apr 2010 16:14
23 lines
370 bytes
370 bytes
Andrzej Gra�y�ski pisze: > Dane jest pole o adresie pocz�tku w ESI i d�ugo�ci w bajtach w ECX. > Nale�y odwr�ci� kolejno�� BIT�W. SHL ECX,3 JZ @@Done MOV EBX,ECX XOR EDX,EDX @@Loop: DEC EBX BT [ESI],EBX SETC AL BT [ESI], EDX SBB AL,0 JZ @@Ancora BTC [ESI],EBX BTC [ESI],EDX @@Ancora: INC EDX LOOP @Loop @@Done:
Re: Podobna zagadka
Author: Bernard
Date: Mon, 12 Apr 2010 20:36
Date: Mon, 12 Apr 2010 20:36
38 lines
1031 bytes
1031 bytes
On 2010-04-12 16:14, Andrzej Gra�y�ski wrote: > Andrzej Gra�y�ski pisze: >> Dane jest pole o adresie pocz�tku w ESI i d�ugo�ci w bajtach w ECX. >> Nale�y odwr�ci� kolejno�� BIT�W. > > SHL ECX,3 > JZ @@Done > MOV EBX,ECX > XOR EDX,EDX > > @@Loop: > DEC EBX > BT [ESI],EBX > SETC AL > BT [ESI], EDX > SBB AL,0 > JZ @@Ancora > BTC [ESI],EBX > BTC [ESI],EDX > @@Ancora: > INC EDX > LOOP @Loop > @@Done: Przyjmuj�c optymistycznie, �e kod jest wolny od b��d�w, otrzymujemy 4 obiegi p�tli na bajt wektora, ka�dy obieg �rednio po 9 instrukcji z nieprzewidywalnym skokiem (JZ), czyli 36 instrukcji na bajt z o�mioma nieprzewidywalnymi skokami o koszcie kilkudziesi�ciu instrukcji ka�dy. Ka�dy bajt b�dzie przy tym odczytywany �rednio 12 razy i zapisywany 4 - sporo. Moje rozwi�zanie ma 11.5 instrukcji na bajt bez skoku zale�nego od danych, po jednym odczycie i zapisie na bajt. Wolne pojedyncze instrukcje AAD mo�na zast�pi� szybkimi parami shl + or. c.b.d.o. :)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads