なんかおかしかったのでもう一度。

>>758
たしかにそうですね。>>758より速かったです。
インラインアセンブラで bsf使って書いたらすごい遅かったんですけどね。
/usr/src/lib/libc/string/ffs.c は普通のCのコードだしソースがどこにあるのか
分からない...
0チェックしなくていいからもっと高速にかけるかもしれないんですけどね。

void comp(unsigned n){
for(;;){
if(n == 0){
func(0);

n = *--SP;
if(n == 0) return;
func(n);
}
else {
*SP++ = n;
}
--n;
}
}