2014-03-12 85 views
0

我目前正在學習MIPS,並且對如何將彙編語言轉換爲二進制文件感到困惑。據我所知,基本格式是:MIPS - 將彙編語言轉換爲二進制文件

opcode(6 bit) rs(5 bit) rd(5 bit) rd(5 bit) shamt(5 bit) funct(6 bit) 

的問題是:

sw $t1, 32($t2) 

到目前爲止,我知道:

$ T1 = 01001,$ T2 = 01010,操作碼SW = 101011,32 =二進制= 100000

我感到困惑的第一件事是shamt,或者是轉變。我瞭解到它是一個5位值,但二進制中的32位用6位表示。

我很困惑的第二件事是排序。這是我到目前爲止,但我不認爲這是正確的,因爲它不是一個32位的字符串:

000000 01010 01001 100000 101011 

有人可以解釋正確的二進制字符串是什麼是彙編語言指令?

回答

3

並非所有指令都使用該機器代碼格式,它看起來主要是算術指令。你需要一個better reference manual列出其他指令的編碼。 sw特別看起來像這樣:1010 11ss ssst tttt iiii iiii iiii iiii其中s是目標(!),t是源,而i是直接偏移量。這樣你的例子看起來像1010 1101 0100 1001 0000 0000 0010 0000這是​​ 請與彙編:

AD490020  sw $t1, 32($t2) 
+0

謝謝!手冊和這個解釋真的有幫助。 – user3025403