2014-06-12 90 views
0

我想弄清楚如何創建跳轉指令代碼並擁有正確的代碼,但我不知道爲什麼。MIPS:找出跳轉指令代碼

所以,如果我有這樣的:

 addi $s1, $s1, 0 
     addi $s1, $s1, 0 
     lui $s1, 0x1001 
top: bne $s1, $s2, end 
     addi $s1, $s1, 1 
end: j top 

我想弄清楚的跳轉指令j top

正確的答案是0x08100003。我只是不知道如何。

top的地址是0x0040000C。

一個快速和骯髒的方式來計算這是如此計算x * 4 =目標地址。所以,x * 4 = 4(1)和x * 4 = 12(3)。所以,我明白爲什麼指令中有1和3。

跳轉的操作碼是2hex,所以我們從000010開始(操作碼的6位)。然後我不確定接下來要做什麼。我知道指令的結尾是3,但我怎麼知道在哪裏放置1?

我希望這是有道理的。謝謝您的幫助。

回答

2

J的指令字由一個值爲%000010的6位操作碼組成,其後是26位,其中包含目標地址的低28位右移2位。

如果我們取0x040000C,將它右移2位,並以二進制形式顯示結果,只有低位26位,我們得到%00000100000000000000000011

讓我們將操作碼位預先放在那,這給我們%00001000000100000000000000000011。如果我們將該數字分成4位組,則會更容易看到十六進制表示法:

0000 1000 0001 0000 0000 0000 0000 0011 
0 8 1 0 0 0 0 3