有人可以向我解释这个吗?问题是: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位模式。 –