我在 RISC-V RARS 1.3 应用程序中创建的这个程序旨在获取一个十进制数并计算该数字中有多少位。我正在测试的是十进制数 5,这个程序应该适用于我放在 t1 上的任何正数。这是我创建的代码。该程序旨在每当 AND 函数的结果不为 0 时添加一个计数器,但我遇到的问题是程序没有停止。这个问题有解决方案吗?
_start:
li t1,2 # start with decimal 5, binary 101
li t2,1 # adding counter for AND function
li t3,0 # bit counter count
li t4,0 # to compare 0
and t5,t1,t2 # t1 & t2 = t5
bne t5,t4,label # go to label if t5 != 0
beqz t5,label2 # go to label if t5 == 0
label:
addi t3,t3,1 # add one to bit count
slli t2,t2,1 # shift left
and t5,t1,t2 # t1 & new t2 = t5
bne t5,t4,label # go to label if t5 != 0
beqz t5,label2 # go to label if t5 == 0
label2:
slli t2,t2,1 # shift left
and t5,t1,t2 # t1 & new t2 = t5
.data