2012-04-30 42 views
1

在這個MIPS程序中以MIPS代碼執行的指令總數?

當這段代碼片段運行時,總共將執行多少條指令?

i1: ori $t0, $0, 1000 
i2: ori $t1, $0, 2000 
i3: addi $t2, $t0, 100 
i4: lw $t3, 0($t1) 
i5: lw $t4, 0($t0) 
i6: add $t3, $t3, $t4 
i7: sra $t3, $t3, 1 
i8: sw $t3, 0($t0) 
i9: sw $t3, 0($t1) 
i10: addi $t0, $t0, 4 
i11: addi $t1, $t1, 4 
i12: slt $t3, $t0, $t2 
i13: bne $0, $t3, i4 

回答

0

在每個週期中,它增加了4〜T0 $,它被初始化爲1000在週期結束時,它會檢查是否$ T0比T2 $,它被初始化爲1100更大。如果是,那麼週期就會中斷。所以,這是原來的13條指令,每個週期加上10條指令,直到中斷。它再循環25次。我可能加錯了,但如果沒有的話,這是263條指令。

+0

它是253. 25個循環中的10條指令,加上第一個週期的3個循環。 – blackcompe

+0

否,直到$ t0大於$ t2,不等於。它循環26次,第一次循環13次,其餘10次循環。 – alf

+1

當它們相等時就會中斷。它是'slt',而不是'sle'。親自運行測試:https://gist.github.com/2572845 – blackcompe