home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: alt.lang.asm
- Path: sparky!uunet!microsoft!hexnut!chuckst
- From: chuckst@microsoft.com (Chuck Strouss)
- Subject: Re: looking for fast min()/max()
- Message-ID: <1993Jan02.141404.19648@microsoft.com>
- Date: 02 Jan 93 14:14:04 GMT
- Organization: Microsoft Corporation
- References: <1992Dec30.152808.25311@netcom.com>
- Keywords: speed min max
- Lines: 19
-
- In article <1992Dec30.152808.25311@netcom.com> tm@netcom.com (Toshiyasu Morita) writes:
- >I'm looking for a fast min() and max() algorithm, preferably without branching.
- >
- >Anyone know of any?
- >
-
- I think this is the standard r1=min(r1,r2) trick, assuming two registers
- holding unsigned quantities on an 80x86:
-
- sub r2,r1 ; set carry if r1>r2, leave r2-r1 in r2
- sbb rs,rs ; scratch register = 0ffffh if we want r2
- and rs,r2 ; zero difference if we want r1
- add r1,rs ; replace r1 value with r2 value if r1>r2
-
- This trashes r2, and requires a scratch register, but it screams
- if you have a >386 which bites when you branch. There is an
- analog of this for max.
-
-
-