请问一下为什么第一次不会直接跳出循环,输出结果还是一啊
Assertion failed c[73]: actual=1 expected=0 bitset(0000000000000001)
.global bit_set
bit_set:
mov x1,#0
mov x2,#0
forloop:
subs x3,x2,#64
beq loopend
ands x3,x0,#1
beq loopend
add x1,x1,#1
lsr x0,x0,#1
add x2,x2,#1
b forloop
loopend:
mov x0,x1
ret
这是c的代码
long _bit_set(long x)
{
long bit;
for(bit = 0; bit < 64; bit++)
{
if(x & 1)
{
break;
}
x >>= 1;
}
return bit;
}
if(x & 1)是想干啥?