0

これらのループを MIPS アセンブリに実装したいのですが、二重条件をチェックする方法がわかりません。

for(i=0;i<dim&&dim>1;++i)


for(k=1;k<dim&&j!=i;++k)

i=$t0
dim=$a0
k=$t1
4

1 に答える 1

1

管理されています。今後の参考のために、ここでそれがどのように行われたかを示します。

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
于 2012-12-15T13:39:42.807 に答える