0
我的理解是:差异登录扩展了即时VS零扩展立即
零扩展的速释意志垫立即与左零,因此:
ori $t1, $0, 0xF
结果:
0x0000000F
登录扩展直接 - 意志垫眼前最显著位,所以:
addi $t1, $0, 0xF
结果:
0xFFFFFFFF
我显然是错误的,但为什么呢?
我的理解是:差异登录扩展了即时VS零扩展立即
零扩展的速释意志垫立即与左零,因此:
ori $t1, $0, 0xF
结果:
0x0000000F
登录扩展直接 - 意志垫眼前最显著位,所以:
addi $t1, $0, 0xF
结果:
0xFFFFFFFF
我显然是错误的,但为什么呢?
您需要考虑立即数的大小,即16位mips。因此,你的直接实际上是0x000F
,所以MSB是零。为了说明符号扩展为负数,请使用位数为#15的更大的立即数,例如0xffff
,这确实将被cpu解释为0xffffffff
。
因为你需要考虑立即数的大小,这是16位mips(我假设你使用mips,你忘了提及...)因此你的立即数实际上是'0x000F',所以MSB是零。 – Jester
噢,好的。我想我正在寻找一个例子,其中标志扩展可能导致一个问题。 – Gigalala
使用更大的直接例如'0xffff'。 – Jester