符号之间的区别 - 扩展立即与零 - 扩展立即

时间:2017-05-30 23:20:03

标签: assembly mips

据我所知:

零点扩展立即用左边的零填充立即数,所以:

   ori $t1, $0, 0xF

结果:

    0x0000000F

Sign-extends the immediate - 将使用最高位填充立即数,所以:

    addi $t1, $0, 0xF

结果:

   0xFFFFFFFF

我显然错了,但为什么?

1 个答案:

答案 0 :(得分:2)

您需要考虑立即数的大小,即mips为16位。因此,您的立即数实际为0x000F,因此MSB为零。要将符号扩展说明为否定,请使用位为#15的更大的立即数,例如0xffff,它将被cpu解释为0xffffffff