这是我的组装代码:
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
当我键入print 0x80484d0
它时,它会返回给我$1 = 134513872
,我知道它代表字符串“asdfsfd”。所以我的问题是,为什么 gdb 会返回 ASCII 码而不是真正的字符串,以及如何更改我的选项以使 gdb 显示字符串。
还有一个问题:我知道ESP
寄存器查看堆栈的底部,可以说它的地址A。movl $0x80484d0,(%esp)
当这条指令发生时会发生什么esp
?我的意思是当某些信息设置为esp
不esp
应该更改为 x80484d0 的 A + 大小时?看看esp
堆栈的底部?这张图片应该让我的问题更清楚。我知道我在某个地方弄错了。谢谢你。