2017-05-30 83 views
0

我的理解是:差异登录扩展了即时VS零扩展立即

零扩展的速释意志垫立即与左零,因此:

ori $t1, $0, 0xF 

结果:

0x0000000F 

登录扩展直接 - 意志垫眼前最显著位,所以:

addi $t1, $0, 0xF 

结果:

0xFFFFFFFF 

我显然是错误的,但为什么呢?

+1

因为你需要考虑立即数的大小,这是16位mips(我假设你使用mips,你忘了提及...)因此你的立即数实际上是'0x000F',所以MSB是零。 – Jester

+0

噢,好的。我想我正在寻找一个例子,其中标志扩展可能导致一个问题。 – Gigalala

+0

使用更大的直接例如'0xffff'。 – Jester

回答

2

您需要考虑立即数的大小,即16位mips。因此,你的直接实际上是0x000F,所以MSB是零。为了说明符号扩展为负数,请使用位数为#15的更大的立即数,例如0xffff,这确实将被cpu解释为0xffffffff