2010-12-08 100 views
0
beq $s1, $s2, endif(assume endif is 22 instructions after the branch) 

答案一BEQ MIPS指令以下問題是顯示二進制

000100 10001 10010 0000000000001111 

有人能解釋什麼是「假設ENDIF是分支後22個指令」是指?

有用數據:

操作碼BEQ爲000100
$ s1爲10010
$ S2是10001

我只是需要幫助理解我們如何最後部分,這是ENDIF。

回答

2

你想跳到beq後的第22條指令,那就是跳過接下來的21條指令。 現在,這將是10101二進制,它是21位十進制數(要跳過的指令數)。 這樣的跳轉指令將是0001 0010 0011 0010 0000 0000 0001 0101,而不是你寫的(你的分支偏移是錯誤的)。

您必須考慮到,在MIPS中,每條指令的大小都是相同的(4個字節),因此分支會計算要跳轉的字數(每個4個字節)。

除此之外,這些值是用二進制補碼編碼的,所以當你向前跳過時,你只需要讀取二進制數字,如果它是反向的,你將不得不應用二進制補碼來「看」 。