Optimization 我如何优化代码以减少运行它所需的周期?

Optimization 我如何优化代码以减少运行它所需的周期?,optimization,assembly,mips,cycle,division,Optimization,Assembly,Mips,Cycle,Division,我是MIPS中汇编语言的新手,但我以前有JAVA方面的经验。我有下面的代码块,我想知道如何使它更快。如您所见,此代码总共需要45个周期才能运行。您会注意到,div指令占总数的很大一部分。也许我可以在代码中添加其他东西来代替div来优化代码并减少周期 守则: li $t0, -32 ----------------------2 cycles lw $t2, 0($s1)--------------------1 cycle div $t2, $t2, $t0-----------

我是MIPS中汇编语言的新手,但我以前有JAVA方面的经验。我有下面的代码块,我想知道如何使它更快。如您所见,此代码总共需要45个周期才能运行。您会注意到,div指令占总数的很大一部分。也许我可以在代码中添加其他东西来代替div来优化代码并减少周期

守则:

 li   $t0, -32 ----------------------2 cycles
 lw   $t2, 0($s1)--------------------1 cycle
 div  $t2, $t2, $t0------------------41 cycles
 sw   $t2, 0($s1)--------------------1 cycle
         total cycles----------------45 cycles

非常感谢你的帮助。谢谢。

如果你能解释一下代码,比如你希望它做什么。你想让我们优化四个操作码吗?最有可能的是,我们将无法。这是
s1/=-32的MIPS?可以用
s1=(~s1-1)>>5
来代替,我想耶稣,这就是作为一个赋值给出的全部内容。“重写代码以使其显著加快”。@Zoran:这不是MIPS的特定概念。他只是利用了一个事实,即
$s1/-32==-$s1/32
。因此,为了消除除法,你要对
$s1
求反(例如,从
$zero
中减去它),然后对结果进行5位的算术右移(右移
n
位与除以
2^n
相同)。