据我所知:
零点扩展立即用左边的零填充立即数,所以:
ori $t1, $0, 0xF
结果:
0x0000000F
Sign-extends the immediate - 将使用最高位填充立即数,所以:
addi $t1, $0, 0xF
结果:
0xFFFFFFFF
我显然错了,但为什么?
答案 0 :(得分:2)
您需要考虑立即数的大小,即mips为16位。因此,您的立即数实际为0x000F
,因此MSB为零。要将符号扩展说明为否定,请使用位为#15的更大的立即数,例如0xffff
,它将被cpu解释为0xffffffff
。