《Python高级编程》3.2 dis / bytecode 与运行时代码改写
实测运行时代码改写的三条路径:直接改 co_code / co_consts 与 CodeType.replace、用 bytecode 0.19.1 在指令层注入调用计数器,以及 3.12+ 的 sys.monitoring。含栈平衡校验边界与三条路径的开销对照(settrace 5.7 倍 vs monitoring 1.7 倍)。
tag
实测运行时代码改写的三条路径:直接改 co_code / co_consts 与 CodeType.replace、用 bytecode 0.19.1 在指令层注入调用计数器,以及 3.12+ 的 sys.monitoring。含栈平衡校验边界与三条路径的开销对照(settrace 5.7 倍 vs monitoring 1.7 倍)。
深入 CPython 执行内核:栈式虚拟机的求值栈与指令编码、dis 的栈效应计算、类与推导式的代码生成、异常表机制,以及 3.11+ 自适应专门化如何在运行时把 LOAD_ATTR 改写为 LOAD_ATTR_INSTANCE_VALUE,附 3.14 字节码变化实测对照。
深入 JVM 类加载机制与字节码:双亲委派模型、类加载器体系、字节码文件结构、Javassist/ASM 运行时字节码增强、Arthas/JFR 诊断,以及 SPI 打破双亲委派与热更新原理。
本节拆开 CPython 的执行模型:源码经过词法与语法分析生成 AST,再编译成字节码,最后由虚拟机执行。我们会用 ast 打印语法树、用 dis 真实反汇编一段代码,看到 3.14 的新字节码指令与常量折叠。随后对比 CPython、PyPy、实验性 JIT 与自由线程构建的关系,说明「Python 是解释型语言」并不准确。读完本节,你能用 dis 观察任何一段代码在解释器眼里的样子。
深入 Java 虚拟机运行时数据区、类加载器双亲委派模型、字节码执行引擎与内存屏障