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