1

我在汇编中有一部分代码。我想知道在以下情况下延迟分支是如何发生的。

Loop:;*** Compare R1 and R2
seq r3,r1,r2 ;Compiar R1 == R2 ? if yes r3 =1 if not r3 = 0
bnez r3,Result //call a Result label in bellow
sgt r3,r1,r2 ;R1 > R2 ? //first delayed slot
bnez r3,r1Greater

r2Greater:;*** subtract r1 from r2
sub r2,r2,r1
j Loop

r1Greater:;*** subtract r2 from r1
sub r1,r1,r2
j Loop

Result: ;*** Write the result (R1)
multi f3,f1,f2
cvti2f f4,r1
div f3,f3,f4
sw PrintfValue,r1
addi r14,r0,PrintfPar
trap 5

;*** end
trap 0
4

0 回答 0