有人可以向我解釋這個嗎?問題是:MIPS - 將數值移入寄存器值
sll $t2, $t0, 44
並且目標是在操作後查找$ t2的值。初始值:
$t2 = 0x12345678
$t0 = 0xAAAAAAAA
我理解的 「SLL $ T2,$ T0,44」 的僞翻譯是:
t2 = t0 << 44
和T0和T2的二進制表示爲:
t2 = 10010001101000101011001111000
t0 = 10101010101010101010101010101010
但是,你如何轉移44位?我認爲一個值只有32位開始。如何通過將$ t0移位44位來找到$ t2的值?
你從哪裏找到該代碼?在「SLL」指令中只有5位用於編碼移位量。所以只能移動0..31的數量。除非你的彙編程序把它作爲一個僞指令處理,並將它轉換成一個「SLLV」(在這種情況下,只有低5位的移位量寄存器纔會被使用)。使用MIPS64架構上的'DSLL32',您可以使用44的移位量(移位量仍然是5位,但偏移了32位)。 – Michael
@邁克爾:這是我的教科書。我發現它很困惑,因爲44. SLLV如何工作(「只有移位量寄存器的低5位將被使用」)? – user3025403
看教材是否提到了64位模式。 –