Mips 更好的解决方法:B[8]=(i-j)和#x2B;A[20]?
作为背景 A[20]=s0,B[8]=s1,i=s4和j=s5 一位同学帮我做了这个,得到了:Mips 更好的解决方法:B[8]=(i-j)和#x2B;A[20]?,mips,Mips,作为背景 A[20]=s0,B[8]=s1,i=s4和j=s5 一位同学帮我做了这个,得到了: lw t0,80(s0) add t0, t0,s4 Sub t0,t0,s5 sw to,32(s1) 有一个: lw t0,80(s0) sub t1,s4,s5 for i - j add t2, t0,t1 for A[20] + (i-j) sw t2, 32(s1) 现在我不知道我所想的答案是否正确,但希望我的思路是正确的。基本上如下所示: val = a[20] val = v
lw t0,80(s0)
add t0, t0,s4
Sub t0,t0,s5
sw to,32(s1)
有一个:
lw t0,80(s0)
sub t1,s4,s5 for i - j
add t2, t0,t1 for A[20] + (i-j)
sw t2, 32(s1)
现在我不知道我所想的答案是否正确,但希望我的思路是正确的。基本上如下所示:
val = a[20]
val = val + i
val = val - j
b[8] = val
vs
这两者应该完成相同的事情,并且使用相同数量的指令来完成
您的版本减去i-j
,然后将差值添加到a[20]
,然后将其存储在b[8]
中。你同学的版本将a[20]
和i
,然后从该总和中减去j
,然后将结果存储在b[8]
中。这基本上只是做同样事情的不同顺序
不过,你同学的版本使用了更少的寄存器。这并不能使它本身变得更好,但是IDK有人可能会认为这是更好的原因。
这些基本上类似:
val = a[20]
val = val + i
val = val - j
b[8] = val
vs
这两者应该完成相同的事情,并且使用相同数量的指令来完成
您的版本减去i-j
,然后将差值添加到a[20]
,然后将其存储在b[8]
中。你同学的版本将a[20]
和i
,然后从该总和中减去j
,然后将结果存储在b[8]
中。这基本上只是做同样事情的不同顺序
不过,你同学的版本使用了更少的寄存器。这并不能使它本身变得更好,但是IDK有人可能会认为这是更好的原因。 < P>你的版本更好,原因如下:
t0
的负载,因此负载使用延迟被覆盖-它实际运行速度比备选方案快1个循环让我们注意一下
sub
和add
指令将捕获溢出。问题中没有说明溢出是否有意义或重要。要完全忽略溢出,请使用subu
和addu
。您的版本更好,原因如下:
t0
的负载,因此负载使用延迟被覆盖-它实际运行速度比备选方案快1个循环sub
和add
指令将捕获溢出。问题中没有说明溢出是否有意义或重要。要完全忽略溢出,请使用subu
和addu