位操作 - 程序集 MIPS - 地址的移动




我正在对汇编 MIPS(32 位)进行一些练习,但我真的不明白左移 2 是如何工作的。我将添加几个示例,以便更好地解释它。

  • 指导是0x91050014
    我必须获取最后 16 位,然后将它们扩展到 32 位。
    所以我采用 0014,由于 MSB 是零,这意味着它是一个正数,所以我将其扩展到 32 位,如下所示:0x00000014
    之后,我必须向左应用2的移位,因此(我使用[]进行删除,{}用于添加):[00]0000 0000 0000 0000 0000 0000
    0001 0100{00}
    我可以得出结论是0x00000050

一旦最后 16 个字节不是正数,我就会遇到问题,如以下示例所示:

  • 指导是0x10A6FFEC
    我采用FFEC,由于MSB是F,这意味着它是一个负数,所以我将其扩展到32位,如下所示:0xFFFFFFEC
    现在我发现自己有这个: 1111 1111 1111 1111 1111 1111 1110 1100
    而且我不明白如何应用这种转变。

提前谢谢。

同样的方式

1111 1111 1111 1111 1111

1111 1110 1100

将是

[11]11 1111 1111 1111 1111

1111 1110 1100{00}

所以它是

1111 1111 1111 1111 1111

1111 1011 0000

0xffffffb0

最新更新