指令有几种

指令有几种

(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 compile_expr / compile_stmt / compile_block / compile_p

阅读更多 →
手工拼一段指令

手工拼一段指令

(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 compile_expr / compile_stmt / compile_block / compile_p

阅读更多 →
调用为什么要个数

调用为什么要个数

本条的指令集(每条是一个元组): PUSH 值 把一个常量压栈 LOAD 名 把变量的值压栈 DEFINE 名 弹栈、在当前层登记 ST

阅读更多 →
跳转指令的目标是什么

跳转指令的目标是什么

本条的指令集(每条是一个元组): PUSH 值 把一个常量压栈 LOAD 名 把变量的值压栈 DEFINE 名 弹栈、在当前层登记 ST

阅读更多 →
为什么 let 和赋值是两条指令

为什么 let 和赋值是两条指令

本条的指令集(每条是一个元组): PUSH 值 把一个常量压栈 LOAD 名 把变量的值压栈 DEFINE 名 弹栈、在当前层登记 ST

阅读更多 →
一条指令该有多小

一条指令该有多小

本条的指令集(每条是一个元组): PUSH 值 把一个常量压栈 LOAD 名 把变量的值压栈 DEFINE 名 弹栈、在当前层登记 ST

阅读更多 →
同一段程序两种跑法

同一段程序两种跑法

(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 compile_expr / compile_stmt / compile_block / compile_p

阅读更多 →
VM 是什么

VM 是什么

「虚拟机」这三个字在本条指的是【0】。

阅读更多 →
为什么要有栈

为什么要有栈

树上的格子一个个下来,排成一行 从下往上的顺序,变成从左到右的顺序 本条的 VM 是「栈式」的:算 1 + 2 要先 PUSH 1、PUSH 2 再 BIN +。用栈的好处是【0】。

阅读更多 →
和真编译的差别

和真编译的差别

字节码 + VM 和「编译成机器码直接跑」的差别是【0】。

阅读更多 →