分解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的主要内容,如果未能解决你的问题,请参考以下文章