【发布时间】:2019-02-26 22:37:59
【问题描述】:
我试图通过查看 GDB 中的堆栈帧信息来理解基本的汇编语言。我试图找出当一个函数被主函数调用时发生了什么。
但我发现“info frame”中“frame at”的值与“info reg”中的ebp寄存器的值不同。按照惯例,这两个值不应该都表示堆栈帧的起点并且是相同的吗?
(gdb) info frame
Stack level 0, frame at 0xffffced8:
...
(gdb) info reg
esp 0xffffcec0 0xffffcec0
ebp 0xffffced0 0xffffced0
我猜是因为0xffffced8到0xffffced0这个地址是用来存放返回地址和输入参数等数据的吧?如何验证我的想法?
【问题讨论】: