分解lui MIPS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分解lui 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

以上是关于分解lui MIPS的主要内容,如果未能解决你的问题,请参考以下文章

MIPS 汇编中的整数问题

MIPS 32位立即数

使用 LUIS 识别器时出错

具有 Luis 意图的自适应卡片

自然语言理解(LUIS)让混合现实设备“听”的懂

微软语义理解服务LUIS 使用教程