为什么这样的指令
mul $t1, $v0 , 4
按预期评估。但是
mul $t1, 4 , $v0
会导致语法错误!
我想知道为什么第一个工作原理,因为mul只能在默认情况下使用寄存器,所以我希望只有像这样的解决方案才能工作
li $t1, 4 # set $t1 = 4
mul $t1, $v0 , $t1 # set $t1 = 4 * n
我正在使用SPIM模拟器。
答案 0 :(得分:1)
好的,我建议查看操作码输出。也许为了速度目的,将乘以4换算或者立即换乘。可能无法通过此'优化'捕获4,reg版本,这就是它抛出错误的原因。
答案 1 :(得分:1)
这导致语法错误,因为MIPS仅支持伪指令mul [rs] [rt] [imm]
,而不支持mul [rs] [imm] [rt]
。我假设它是为了保持一致性,因为MIPS中没有真正的指令支持指令中间的立即值。