0

ここに私のアセンブリコードがあります:

 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

4

1 に答える 1