cmpl $0x7,0xc(%rsp)
これは、メモリ内の$ RSPからのオフセット12日にアクセスしています。したがって、メモリにrsp
の後に48バイト、またはrsp
の後に12*8 = 96
の96番目のバイトにアクセスすると、12*4 = 48
にアクセスしていますか?これは64ビットアーキテクチャなので、レジスタの長さは8バイトなので、96ビットですか?
いずれにしても、gdb
のその位置にアクセスするには、x/96s $rsp
を実行しますか?オフセットの全リストなしでそれを簡単に印刷する方法はありますか?
x/12s $rsp
と書くと、メモリアドレスは0x7FFFFFFFE1F0
から0x7FFFFFFFE20D
になります。したがって、開始点と終了点のオフセットの差は29バイトです。私は12を指定したとき、それはどのように論理的ですか?
rsp
上記のデータ12のバイトを見ているので、
IIRC、 'cmpl'命令は32ビットのためであります(cmpbは1バイトで、cmpwは16ビットの値になります)、オフセットとして+ 3 * 4を使って見ても驚くことはありません。64ビットの値に対して 'cmpq'を使います。ビット値、それはありませんか? – PypeBros