Article View: pl.comp.lang.asm
Article #2143Re: Zagadka
From: Andrzej Grażyński
Date: Thu, 25 Mar 2010 23:12
Date: Thu, 25 Mar 2010 23:12
51 lines
2666 bytes
2666 bytes
Wojciech Muła pisze:
> Andrzej Grażyński <grazynsk@petex.com.pl> wrote:
>
>>>>>> EAX <- MIN(EAX, EDX) signed
>>>>>>
>>>>>> CMP EAX,EDX
>>>>>> SETL BL
>>>>>> NEG BL
>>>>>> SBB EBX,EBX
>>>>>> AND EAX,EBX
>>>>>> NOT EBX
>>>>>> AND EDX,EBX
>>>>>> OR EAX,EDX
>>>>> Można zejść do 4 instrukcji.
>>> sub edx, eax
>> I tu jest problem: jeżeli w eax i edx będą liczby przeciwnych znaków
>> takie, że ich różnica nie zmieści się na 32 bitach (jako signed), to CF
>> zostanie ustawiony niezależnie od tego, czy EDX<EAX czy EDX>=EAX. I
>> ostateczny wynik może nie być poprawny.
>>
>> Oryginalne rozwiązanie podane przez Knutha bazuje na formule
>>
>> MIN(X, y) = (X + Y - ABS(X-Y))/2
>>
>> i jest tak samo wrażliwe na problem nadmiaru.
>
> Faktycznie, nie zwróciłem na to uwagi. Ale dalej można wykorzystać
> trik z xorem dla dodatnich - w końcu tylko warunkowo podmieniamy bity.
>
> Podrzuć jeszcze jakieś zadanko, to miło czasem ruszyć głową nad
> zdałoby się prostym problemem.
>
> w.
>
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
Technical Details
Message-ID:
<hogqkc$bea$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!plix.pl!newsfeed1.plix.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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!plix.pl!newsfeed1.plix.pl!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: Zagadka Date: Fri, 26 Mar 2010 00:12:09 +0100 Organization: http://onet.pl Lines: 53 Message-ID: <hogqkc$bea$1@news.onet.pl> 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> NNTP-Posting-Host: public-gprs42283.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1269558734 11722 91.94.37.119 (25 Mar 2010 23:12:14 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Thu, 25 Mar 2010 23:12:14 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) In-Reply-To: <20100325202642.6eb8bfe8.wojciech_mula@poczta.null.onet.pl.invalid> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit