Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么在GDB中,“;框架位于;是否与ebp($fp)寄存器的值不同?_C_Assembly_Gdb_Stack - Fatal编程技术网

C 为什么在GDB中,“;框架位于;是否与ebp($fp)寄存器的值不同?

C 为什么在GDB中,“;框架位于;是否与ebp($fp)寄存器的值不同?,c,assembly,gdb,stack,C,Assembly,Gdb,Stack,我试图通过查看GDB中的堆栈帧信息来理解基本汇编语言。我试图找出当一个函数被main函数调用时发生了什么 但是我发现“info frame”中的“frame at”的值与“info reg”中的ebp寄存器的值不同。按照惯例,这两个值不应该都指示堆栈帧的起点并且相同吗 (gdb) info frame Stack level 0, frame at 0xffffced8: ... (gdb) info reg esp 0xffffcec0 0xffffcec0 ebp

我试图通过查看GDB中的堆栈帧信息来理解基本汇编语言。我试图找出当一个函数被main函数调用时发生了什么

但是我发现“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之间的地址用于存储返回地址和输入参数等数据?如何验证我的想法?

GDB将帧地址定义为“属于帧的最后一个字之后的内存位置地址。”

(这可能是特定于体系结构的。)