/ ffs.s (emx+gcc) -- Copyright (c) 1993 by Eberhard Mattes

        .globl  _ffs

/ int ffs (int i)
/ {
/   int j;
/
/   if (i == 0)
/     return (0);
/   for (j = 1; !(i & 1); ++j)
/     i >>= 1;
/   return (j);
/ }

        .text

        .align  2, 0x90

_ffs:
        movl    1*4(%esp), %edx         / i
        bsfl    %edx, %eax
        jz      1f
        incl    %eax
        ret

        .align  2, 0x90
1:      xorl    %eax,%eax
        ret
