掌握目标语言的使用、编写 是非常重要的!!!
如果你要实现的Jack语言编译器是把Jack语言代码编译成虚拟机VM代码、或者直接成汇编代码,要完成源代码中unit A——> 目标语言代码转写此unit A 这个工作,缺少对目标语言代码的掌握是不行的。
所以:汇编作为最普遍的目标代码,是早晚都需要学会的。
贴几张书中截图,展示一下在vm层面,是如何实现诸如求积函数、数组元素赋值、对象实例赋值这样的高级语言代码典型unit的。
首先这是vm的函数执行内存模型、基本的pop/push指令:
1. 一个求积函数
2. 数组元素赋值: int bar[10]; bar[2]=19;
3. 实例对象的成员变量赋值: