小编Lin*_*eng的帖子

具有负立即数常量的 MIPS 中的 andi 与 addi 指令

假设 $t2= 0x55555550,然后执行以下指令:

andi $t2, $t2, -1
Run Code Online (Sandbox Code Playgroud)

$t2 变成 0x0005550

MIPS 仿真器1证实了这一点

然而,这不是我所期望的。我认为答案应该是 0x55555550 & 0xFFFFFFFF = 0x55555550。我认为常量 -1 在和逻辑之前被符号扩展为 0xFFFFFFFF。但似乎答案是 0x55555550 & 0x0000FFFF

为什么 -1 被符号扩展为 0x0000FFFF 而不是 0xFFFFFFFF


脚注 1:编者注:启用“扩展伪指令”的 MARS 确实将其扩展为多条指令以0xffffffff在 tmp 寄存器中生成,因此保持$t2不变。否则 MARS 和 SPIM 都会以不可编码的错误拒绝它。其他汇编程序可能有所不同。

assembly mips sign-extension zero-extension immediate-operand

1
推荐指数
1
解决办法
9020
查看次数