补全:对照两个 VM

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:06 的词法/语法/showEnvRunError;本条加的 compile_expr / compile_stmt / compile_block / compile_program(树 → 指令列表)、listing(code)(把指令列表打成「序号:指令 操作数|…」)、Code(函数值:名、参数、代码、定义时的环境)、run_code(code, env, out)(栈式 VM,交回执行的指令条数)、run_vm(src)。)

(Python 自己就是「编译成字节码、由 VM 执行」:dis.get_instructions(f) 列出函数 f 的指令,每条有 opname(指令名)和 argval(操作数);f.__code__ 是代码对象,co_varnames 是局部变量名、co_argcount 参数个数、co_names 用到的全局名。不同 Python 版本的指令名会变,本节只看这些稳定的东西。)

把同一个算法(1 到 n 求和)分别写成本条的小语言和 Python,用两个 VM 各跑一次;补全 both(n):交回 (本条 VM 的输出, Python 的结果, 本条 VM 执行的指令条数)。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论