29. 基于堆栈的执行
29. 基于堆栈的执行 CPython 使用堆栈机执行大多数字节码。堆栈机使用隐式操作数堆栈,而不是在每条指令中命名显式源寄存器和目标寄存器。 在 CPython 中,该堆栈属于当前帧。它存储对 Python 对象的引用。字节码指令推送对象、弹出对象、检查对象、替换对象以及使用对象计算新结果。 一个简单的表达: python id="kz6m7x" x = a + b 在概念上执行为: text id="eurdpx" LOAD_FAST a push a LOAD_FAST b push b BINARY_OP + pop b and a, push result STORE_FAST x pop result into local x 指令流没有说: text id="ardj57" add local_a, local_b, local_x 相反,它说:```text id="jzzlmf" load a load b add top two stack values store result ## 29.1 为什么 CPython 使用堆栈机 堆栈机为字节码提供了紧凑的表示形式。许多指令不需要显式操作数位置,因为它们在堆栈顶部操作。 例如:…