python - 为什么在我的 32 位服务器中,Python 的 ESP 比 EBP 大?

标签 python assembly x86

我使用 gdb 来调试我的程序。像这样的输出,我在 Python/ceval.c:1071

处中断它
(gdb) info reg
eax            0x7d     125
ecx            0x29     41
edx            0x8a44e04        144985604
ebx            0xce4518 13518104
esp            0xbfb24d10       0xbfb24d10
ebp            0xb7d72bed       0xb7d72bed
esi            0x8a563e4        145056740
edi            0x8a56294        145056404
eip            0xc400f8 0xc400f8 <PyEval_EvalFrameEx+936>
eflags         0x206    [ PF IF ]
cs             0x73     115
ss             0x7b     123
ds             0x7b     123
es             0x7b     123
fs             0x0      0
gs             0x33     51
(gdb) 

所以我想知道为什么esp比ebp大? 一些信息,

Linux foxyfont2.uc.local 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/Linux  
gcc 版本 4.6.2 (GCC)

最佳答案

尽管ebp有时被用作帧指针,但它只是另一个通用寄存器。如果它不用作帧指针,则它的值可以是任何值。您可能还会看到以前使用的剩余值(value)。

关于python - 为什么在我的 32 位服务器中,Python 的 ESP 比 EBP 大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26972249/

相关文章:

python - 如何调整 seaborn catplot 的大小

python - Plotly:如何从两个数据框列中绘制两条线并从其他两列中分配悬停信息?

assembly - 写入没有段寄存器的地址

assembly - 执行更多指令如何加快执行速度

c - 为什么我得到的是 "popq %rbp"而不是 "leave"?

linux - 如何在 Linux 可执行文件中添加/删除 x86 指令而不破坏对齐

python - Python 2.7 中出现 "ImportError: cannot import name HTTPSConnection"错误

python - 将版权符号放入 Python 文件

assembly - 如何在汇编中播种随机数生成器?

linux - 尽管使用 gcc 链接器,但获取对汇编代码的 "_printf"错误的 undefined reference