Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops MIPS程序集中for循环中的双重条件_Loops_Assembly_For Loop_Mips_Conditional Statements - Fatal编程技术网

Loops MIPS程序集中for循环中的双重条件

Loops MIPS程序集中for循环中的双重条件,loops,assembly,for-loop,mips,conditional-statements,Loops,Assembly,For Loop,Mips,Conditional Statements,我想在MIPS assembly中实现这些循环,但无法解决如何检查双重条件: for(i=0;i<dim&&dim>1;++i) for(k=1;k<dim&&j!=i;++k) i=$t0 dim=$a0 k=$t1 (i=0;i1;++i)的 对于(k=1;k。 以下是如何完成的,以供将来参考: if ( i == j && i == k ) // if ( <cond1> && <c

我想在MIPS assembly中实现这些循环,但无法解决如何检查双重条件:

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


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

i=$t0
dim=$a0
k=$t1
(i=0;i1;++i)的

对于(k=1;k。
以下是如何完成的,以供将来参考:

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
if(i==j&&i==k)//if(&&)
i++;//if body
其他的
j--;//else body$s2
j=i+k;
bne$s1,$s2,ELSE#cond1:分支if!(i==j)
bne$s1,$s3,ELSE#cond2:分支if!(i==k)
附加$s1,$s1,1#如果主体:i++
j下一步#跳过其他人
ELSE:addi$s2,$s2,-1#ELSE body:j--
下一步:添加$s2、$s1、$s3#j=i+k