Article View: pl.comp.lang.asm
Article #2145Re: Zagadka
From: Wojciech Muła
Date: Fri, 26 Mar 2010 08:46
Date: Fri, 26 Mar 2010 08:46
57 lines
2791 bytes
2791 bytes
Michal Schulz <michal.schulz@onet.eu> wrote:
> > Ten fragment zlicza jedynki w EAX
> >
> > MACRO VCOUNTONESSTEP MSK, SHFT
> > MOV ECX,&MSK
> > MOV EDX,EAX
> > SHR EAX,&SHFT
> > AND EAX,ECX
> > AND EDX,ECX
> > ADD EAX,EDX
> > ENDM
> >
> > VCOUNTONESSTEP 055555555H,1
> > VCOUNTONESSTEP 033333333H,2
> > VCOUNTONESSTEP 0F0F0F0FH,4
> > VCOUNTONESSTEP 00FF00FFH,8
> > VCOUNTONESSTEP 0000FFFFH,16
>
> W tym pojedynku wygral niestety gcc, ktory ten sam kod:
>
> unsigned long bfcnto(unsigned long v)
> {
> unsigned long const w = v - ((v >> 1) & 0x55555555);
> unsigned long const x = (w & 0x33333333) + ((w >> 2) & 0x33333333);
> unsigned long const c = (((x + (x >> 4)) & 0xF0F0F0F) * 0x1010101)>>24;
>
> return c;
> }
>
> przetworzyl na wersje prawie identyczna z twoja:
>
> mov edx, eax
> shr edx
> and edx, 0x55555555
> sub eax, edx
> mov edx, eax
> and eax, 0x33333333
> shr edx, 2
> and edx, 0x33333333
> add edx, eax
> mov eax, edx
> shr eax, 4
> add eax, edx
> and eax, 0x0f0f0f0f
> imul eax, eax, 0x01010101
> shr eax, 24
Uprzedziłeś mnie:
http://graphics.stanford.edu/~seander/bithacks.html
> PS. W SSE4.2 byloby jeszcze prosciej :)
W SSSE3 też dość prosto:
http://wm.ite.pl/articles/sse-popcount.html
w.
Technical Details
Message-ID:
<20100326094609.c9199b47.wojciech_mula@poczta.null.onet.pl.invalid>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mailReferences:
<hnm094$v7l$1@news.onet.pl> <hnoh5b$3m7$1@inews.gazeta.pl> <hnveer$306$1@news.onet.pl> <20100319114543.3cac8a82.wojciech_mula@poczta.null.onet.pl.invalid> <ho8ca6$tvk$1@news.onet.pl> <20100322194214.69cd904d.wojciech_mula@poczta.null.onet.pl.invalid> <hodubo$aan$1@news.onet.pl> <20100325202642.6eb8bfe8.wojciech_mula@poczta.null.onet.pl.invalid> <hogqkc$bea$1@news.onet.pl> <4215848.3tubPC4RE0@meehow.homeip.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail From: Wojciech Muła <wojciech_mula@poczta.null.onet.pl.invalid> Newsgroups: pl.comp.lang.asm Subject: Re: Zagadka Date: Fri, 26 Mar 2010 09:46:09 +0100 Organization: http://onet.pl Lines: 58 Message-ID: <20100326094609.c9199b47.wojciech_mula@poczta.null.onet.pl.invalid> References: <hnm094$v7l$1@news.onet.pl> <hnoh5b$3m7$1@inews.gazeta.pl> <hnveer$306$1@news.onet.pl> <20100319114543.3cac8a82.wojciech_mula@poczta.null.onet.pl.invalid> <ho8ca6$tvk$1@news.onet.pl> <20100322194214.69cd904d.wojciech_mula@poczta.null.onet.pl.invalid> <hodubo$aan$1@news.onet.pl> <20100325202642.6eb8bfe8.wojciech_mula@poczta.null.onet.pl.invalid> <hogqkc$bea$1@news.onet.pl> <4215848.3tubPC4RE0@meehow.homeip.net> NNTP-Posting-Host: public-gprs2149.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1269593185 8143 87.96.8.101 (26 Mar 2010 08:46:25 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Fri, 26 Mar 2010 08:46:25 +0000 (UTC) X-Newsreader: Sylpheed 2.5.0 (GTK+ 2.10.14; i686-pc-mingw32) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit