ここに私のアセンブリコードがあります:
0x0804841d <+0>: push %ebp
0x0804841e <+1>: mov %esp,%ebp
0x08048420 <+3>: and $0xfffffff0,%esp
0x08048423 <+6>: sub $0x20,%esp
0x08048426 <+9>: movl $0x8,0x1c(%esp)
0x0804842e <+17>: movl $0x80484d0,(%esp)
0x08048435 <+24>: call 0x80482f0 <printf@plt>
=>0x0804843a <+29>: leave
0x0804843b <+30>: ret
入力すると、文字列「asdfsfd」の略であることがわかっていますprint 0x80484d0
。$1 = 134513872
したがって、私の質問は、gdb が実際の文字列ではなく ASCII コードを返す理由と、gdb が文字列を表示するようにオプションを変更する方法です。
そして、もう 1 つの質問:ESP
レジスタがスタックの一番下を見て、そのアドレス Amovl $0x80484d0,(%esp)
を参照していることはわかっていesp
ます。一部の情報が設定されている場合、A + サイズの x80484d0 に変更しesp
ないでください。スタックの一番下を見るにはesp
?この画像は私の質問をより明確にするはずです。私はどこかで間違っていることを知っています。ありがとうございました。esp