我想知道如何在双字中找到R1和R1寄存器中的第一个逻辑单元(单个位),例如从右到左。我怎样才能达到上述目的?
我尝试遍历dword的各个元素,但似乎无法正确理解我的期望。还尝试左右移动,总体上没有运气。
MOV R2, R0, LSR #31
loop:
MOVS R0, R0, LSL #2
ADC R2, R2, R0, LSR #31
bne loop
我想使用前面所述的方法来查找当前比特的索引
答案 0 :(得分:1)
您可以使用Function
来计数前导零。通过从CLZ
中减去前导零,可以获得字节中第一个31
的位置。
1
CLZ R1, R0
RSB R1, R1, #31
包含您要处理的R0
。
DWORD
的末尾包含“第一个逻辑单元”。
将R1
可选后缀添加到S
时,condition flags将被更新,并且可以检测到RSB
寄存器。