对于32位系统利用lui ori 获得32位数的操作

本文解析了32位系统中一条无法直接执行的MIPS指令,并详细拆解了该指令如何被转化为可执行的lui和ori指令的过程。通过对机器码的逐位分析,解释了如何通过lui和ori指令实现32位立即数的加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

32位系统里面add $t1 $zero 0x10000010,这条指令是无法执行的,因为指令就是32位的,后面再跟一个32位的立即数,是不可能的,所以在MIPS仿真中,自动将这条指令拆成了如下格式在这里插入图片描述
code就是这条指令的机器码,逐一分析,
首先拆出了一个lui的指令,而这条指令的意义是把低16位放进目标寄存器的高16位
lui的指令格式如下
在这里插入图片描述
将code码展开得到
0011 1100 0000 0001 0001 0000 0000 0000
与上面对照无误;
拆出的第2条指令是
进行或运算的ori,这里注意,虽然i没有标明是ui(无符号立即数),但是他的确是无符号扩展的
也就是用刚才寄存器中的高16位立即数+低16位0
和这条指令里面的 高16位0+低16位立即数进行或运算,从而得到32位数,把这个数放在寄存器里
分析code码,对其进行展开
0011 0100 0010 0001 0000 0000 0001 0000
这个好像没啥可分析的。。
就是6+5+5,神似lw指令,扩成32位之后,像lw一样计算,只不过需要一个ALU控制(这里面的ALU控制由ALUop和低6位的func码决定的)
最后执行add $9,$0,$1;(32位数在$1寄存器里面)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值