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

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寄存器里面)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值