Python 堆栈帧基本上就是对 x86 的模拟,⽤指针对应 BP、SP、IP 寄存器。堆栈帧成员包括函数执行所需的名字空间、调⽤堆栈链表、异常状态等。
BP是基指针, SP是栈指针, IP是指令指针. 通常BP用来保存使用局部变量的地址,SP用来指向当前的栈,IP用来指示当前运行程序的当前指针。
typedef struct _frame {
PyObject_VAR_HEAD struct _frame *f_back; // 调⽤堆栈 (Call Stack) 链表
PyCodeObject *f_code; // PyCodeObject
PyObject *f_builtins; // builtins名字空间 PyObject *f_globals; //