0

我一直在寻找这个问题,但似乎找不到。如果我在 GDB 反汇编代码中,如何将 0xfffffff4 之类的内容转换为 -0xc(我在网上找到了值)

我正在尝试实现它在 Perl 中的完成方式。我使用的是十六进制,但我不知道我在做什么:

print hex(shift);
4

2 回答 2

1

这是二进制补码http://en.wikipedia.org/wiki/Two%27s_complement

所以,你所做的就是反转每一位,然后加 1。

例如 0xffffff04 将变为 0x000000fb+1=0x000000fc

编辑:要改回来,你做同样的事情:所以 0x000000fc 会变成 0xffffff03+1=0xffffff04

于 2012-04-11T23:35:30.027 回答
1

在 32 位寄存器或内存访问中,0xfffffff4 is -0xc(或-12)——假设是现代 CPU 架构,所有这些架构都使用二进制补码。

于 2012-04-11T23:35:40.653 回答