繁体   English   中英

为什么MARS mips可以立即达到32位?

[英]Why is MARS mips 32 bit immediate possible?

因此,根据我看过的一些资料,不可能在32位mips中使用32位立即数,因为机器指令是32位且立即值存储在机器指令中。 据我所知,最大立即数可以是16位,以便为其余指令留出空间。 但是在MARS 4.5 mips中,此指令可以正常工作(使用默认设置):

.text
ori $t1, $0, 0xffffffff #load 32-bit pattern into $t1

这样做可以正常运行,这使我感到困惑,因为我不应该出于上述原因(32位机器代码如何保留32位立即数?)。 我最好的猜测是,当立即数字段大于0xffff时,MARS中的ori实际上会运行伪指令,而lui和ori的常规字段会定期加载,但我不确定。 有人可以阐明这一点吗?

如果您注意到在Mars 4.5中汇编该指令时,会得到三个指令

lui $1,0xFFFFFFFF
ori $1,$1,0x0000FFFF
or $9,$0,$1

仍然有些误导,但基本上可以为您解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM