我想在 MIPS 程序集中实现这些循环,但不知道如何检查双重条件:
for(i=0;i<dim&&dim>1;++i)
for(k=1;k<dim&&j!=i;++k)
i=$t0
dim=$a0
k=$t1
我想在 MIPS 程序集中实现这些循环,但不知道如何检查双重条件:
for(i=0;i<dim&&dim>1;++i)
for(k=1;k<dim&&j!=i;++k)
i=$t0
dim=$a0
k=$t1
管理。为了将来参考这里是它是如何完成的:
if ( i == j && i == k ) // if ( <cond1> && <cond2> )
i++ ; // if body
else
j-- ; // else body $s2
j = i + k ;
bne $s1, $s2, ELSE # cond1: branch if !( i == j )
bne $s1, $s3, ELSE # cond2: branch if !( i == k )
addi $s1, $s1, 1 # if-body: i++
j NEXT # jump over else
ELSE: addi $s2, $s2, -1 # else-body: j--
NEXT: add $s2, $s1, $s3 # j = i + k