为什么这样的指令,如MIPS汇编指令参数
mul $t1, $v0 , 4
评估预期。但是
mul $t1, 4 , $v0
导致语法错误!
我不知道为什么第一个作品,因为只有穆尔每默认寄存器的作品,所以我希望,只有这样的解决方案,我用SPIM模拟器干活
li $t1, 4 # set $t1 = 4
mul $t1, $v0 , $t1 # set $t1 = 4 * n
。
为什么这样的指令,如MIPS汇编指令参数
mul $t1, $v0 , 4
评估预期。但是
mul $t1, 4 , $v0
导致语法错误!
我不知道为什么第一个作品,因为只有穆尔每默认寄存器的作品,所以我希望,只有这样的解决方案,我用SPIM模拟器干活
li $t1, 4 # set $t1 = 4
mul $t1, $v0 , $t1 # set $t1 = 4 * n
。
好吧,我会建议看操作码输出。也许乘以4是为了速度目的而加入或可能是立即交换。 4,reg版本可能不会通过这个“优化”被捕获,这就是它抛出错误的原因。
这会导致语法错误,因为MIPS仅支持伪指令mul [rs] [rt] [imm]
而不支持mul [rs] [imm] [rt]
。我假设它是为了保持一致性,因为在MIPS中没有真正的指令支持指令中间的立即值。
我的第一个答案是错误的,这个应该更好:) – 2010-05-10 23:18:34
这样的交换过程是如何工作的,为什么它不交换4的时候会不会照顾到4? – 2010-05-10 23:20:07
sll reg,2和4相同,不用额外的寄存器。我猜测,也许汇编程序为你做了这个,并希望你仔细检查操作码输出是否确定。 – 2010-05-10 23:22:29