🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Zagadka

#2141
From: Andrzej Grażyński
Date: Wed, 24 Mar 2010 20:57
61 lines
2459 bytes
Wojciech Muła pisze:
> Andrzej Grażyński <grazynsk@petex.com.pl> wrote:
> 
>>>> EAX <- MIN(EAX, EDX) unsigned
>>>>
>>>>
>>>>     CMP EAX,EDX
>>>>     SBB EBX,EBX
>>>>     AND EAX,EBX
>>>>     NOT EBX
>>>>     AND EDX,EBX
>>>>     OR  EAX,EDX
>>> Można zejsć do 5 instrukcji.
> 
> cmp eax, edx
> sbb ebx, ebx
> 
> xor edx, eax
> and edx, ebx
> xor eax, edx
> 
> Ostanie 3 instrukcje można skojarzyć z rozwiązaniem stosownym w
> http://en.wikipedia.org/wiki/XOR_linked_list
> 
>>>> 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.



> sbb ebx, ebx
> 
> and edx, ebx
> add eax, edx	; albo sub
> 
>> Chętnie zobaczyłbym te krótsze wersje.
> 
> Proszę. :) Fajnie, że trochę rozruszałeś grupę.
> 
> w.
Technical Details
Message-ID: <hodubo$aan$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail
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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.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: Wed, 24 Mar 2010 21:57:18 +0100
Organization: http://onet.pl
Lines: 61
Message-ID: <hodubo$aan$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>
NNTP-Posting-Host: public-gprs1285.centertel.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1269464250 10583 87.96.5.5 (24 Mar 2010 20:57:30 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Wed, 24 Mar 2010 20:57:30 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
In-Reply-To: <20100322194214.69cd904d.wojciech_mula@poczta.null.onet.pl.invalid>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit