MIPS...detecting least significant bit.

M. Warner Losh imp at bsdimp.com
Thu Oct 9 19:55:35 UTC 2008

In message: <5f67a8c40810091158y4a334f17g7ee25f67888e84e8 at mail.gmail.com>
            "Zaphod Beeblebrox" <zbeeble at gmail.com> writes:
: On Thu, Oct 9, 2008 at 11:09 AM, Izzy K. <rjdfhorn_06 at 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)

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


More information about the freebsd-mips mailing list