-2
特定のアドレスでアセンブリ命令を更新しようとしています。私は、例えば、命令はバイト単位でエンコードされていることを発見しアセンブリ命令の保存方法を調べる
0x088... jmp 0x88465002
(gdb) x /2b 0x088
0x088... <main+20> 0xeb 0x15
:そうするために、私は、アセンブリ命令は、具体的に以下の命令を見て、保存されているかを確認するために、C関数を分解しましたJMP
は0xEB
としてエンコードされます。しかし、なぜJMP
の場所が0x15
として格納されていますか?これは、0x15
バイトをスタック(つまり0x15
はオフセット)にジャンプさせるためですか?
アセンブラ/インテルの参考マニュアルを入手した場合は、すべてクリアされます... "何も役に立たない場合は、マニュアルをお読みください。" –
アセンブリ命令は、* machine *命令に対応する意味でのみ、プログラムイメージ内のアドレスを持つことに注意してください。また、マシン命令は2バイト以上(たとえオペランドを除外したとしても)にエンコードされることに注意してください。 –
アセンブリ言語に関する書籍をお読みになり、参考マニュアルをお手元に用意してください。 – Olaf