吕氏MIPS分解 [英] Break down of lui MIPS

查看:4
本文介绍了吕氏MIPS分解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试弄清楚ori t1,100000在MIPS中是如何分解的。MIPS说它变成了。

lui $1,1
ori $1,$1,34464
or $9,$9,$1

我不确定它如何获得lui的值1和ori的值34464。

推荐答案

如果使用任何计算器将100000转换为十六进制,则会得到

100000=0x186a0

其大小优于16位,并且在MIPS中,立即数不能大于16位。我们不能在一条指令中输入此值。

看看上面和下面的不同部分。

0x186a0=0x10000+0x86a0
=(0x1<;<;16)+0x86a0

0x86a0=34464

现在我们已经具备了编写代码所需的一切。

# store 0x10000==1<<16 in an intermediate register with lui (load upper immediate)
# MIPS asm uses $1 (or $at) as intermediate register
lui $1,1
# content of $1 is 0x00010000
ori $1,$1,34464
# nor we can OR this register with t1 (also called $9)
or $9,$9,$1

这篇关于吕氏MIPS分解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆