Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 Oct 2008 13:54:10 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        zbeeble@gmail.com
Cc:        freebsd-mips@FreeBSD.org, rjdfhorn_06@yahoo.com
Subject:   Re: MIPS...detecting least significant bit.
Message-ID:  <20081009.135410.1613257537.imp@bsdimp.com>
In-Reply-To: <5f67a8c40810091158y4a334f17g7ee25f67888e84e8@mail.gmail.com>
References:  <19900967.post@talk.nabble.com> <5f67a8c40810091158y4a334f17g7ee25f67888e84e8@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <5f67a8c40810091158y4a334f17g7ee25f67888e84e8@mail.gmail.com>
            "Zaphod Beeblebrox" <zbeeble@gmail.com> writes:
: On Thu, Oct 9, 2008 at 11:09 AM, Izzy K. <rjdfhorn_06@yahoo.com> wrote:
: 
: >
: > I'm working on an assignment and have reached a road block. If I have a 16
: > bit integer like:
: >
: > 0000 0000 0000 0100
: >
: > how would I check to see what the value in the LEAST significant bit is?
: > Basically, how would I check to see if the least significant bit is 0 or 1?
: > How would I code it? I am a beginner at MIPS...is there a simple
: > instruction
: > that detects this? Please help me.
: 
: 
: My first guess at the solution (and forgive me for not knowing the MIPS
: instruction set --- so I'm just speaking in general machine language terms)
: is to loop while left shifting and testing with an AND 0x01.  You need to
: count the loops to know when you encountered the first bit set.  Now...
: often the result of the left shift sets a status register based on the
: previous value of the 0 bit (carry or underflow?) ... so your loop might be
: an instruction shorter --- not requiring the AND --- if this is the case.
: 
: Now... this all seems rather fundamental.  Even the brute force case of
: AND'ing with a bunch of values might pipeline well.  Are you sure you should
: be taking this course?

Or you could just call ffs.

FFS(3)                 FreeBSD Library Functions Manual                 FFS(3)

NAME
     ffs, ffsl, fls, flsl -- find first or last bit set in a bit string

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081009.135410.1613257537.imp>