この質問を探し回っていますが、見つからないようです。GDB 逆アセンブル コードを使用している場合、0xfffffff4 のようなものを -0xc に変換するにはどうすればよいですか (オンラインで値を見つけました)。
Perl での実行方法を実装しようとしています。私は16進数を使用していましたが、何をしているのかわかりません:
print hex(shift);
この質問を探し回っていますが、見つからないようです。GDB 逆アセンブル コードを使用している場合、0xfffffff4 のようなものを -0xc に変換するにはどうすればよいですか (オンラインで値を見つけました)。
Perl での実行方法を実装しようとしています。私は16進数を使用していましたが、何をしているのかわかりません:
print hex(shift);
2 の補数です http://en.wikipedia.org/wiki/Two%27s_complement
つまり、すべてのビットを反転してから 1 を追加します。
たとえば、0xffffff04 は 0x000000fb+1=0x000000fc になります。
編集: 元に戻すには、同じことを行います: 0x000000fc は 0xffffff03+1=0xffffff04 になります
32 ビット レジスタまたはメモリ アクセスでは、0xfffffff4
is -0xc
(または-12
) — すべてが 2 の補数を使用する最新の CPU アーキテクチャを想定しています。