补全:把 VM 的环境当根
(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 compile_expr / compile_stmt / compile_block / compile_program(树 → 指令列表)、lis
Python 和本条的对应
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
co_varnames 是什么
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
看一个真函数的代码对象
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
循环在字节码里
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
补全:数指令
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
补全:局部还是全局
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
补全:找出所有函数的代码对象
(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varname
补全:对照两个 VM
(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 compile_expr / compile_stmt / compile_block / compile_program(树 → 指令列表)、lis
编译器和 VM 谁先写
从零实现「编译 + VM」,最稳的顺序是【0】。