Article View: pl.comp.lang.asm
Article #2141Re: Zagadka
From: Andrzej Grażyński
Date: Wed, 24 Mar 2010 20:57
Date: Wed, 24 Mar 2010 20:57
61 lines
2459 bytes
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-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>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