======Virtual Machine / Part I====== //Week 1 notes// ---- VM(//Virtual Machine//)是 Jack 语言的中间层,其负责将 high-level 语言转化为汇编:\\ \\ {{ :cs:comp_n_arch:courses:fnti_ii:levels.jpg?600 |}} ====Complication Overview==== >We can only see a short distance ahead, but we can see plenty there that needs to be done. --//Alan Turing// ===Two tiers compilation=== 为什么会有这种架构: * 计算器的构成不同,导致机器语言不同 * 直接面向机器语言的编译器是 machine language depended,编译器实现不同。 ==Tier I: virtual machine== //VM// 的理念就是将所有的高级语言翻译为一种抽象化的代码://VM code//(bytecode)。在这个层级中,编译器不关心具体的机器语言实现,而是将所有的计算机统一视作虚拟机(//Virtual Machine//) ==Tier II: virtual machine implementation== 本层级负责具体的,基于计算机类型的实现。具体的工作是将虚拟机中的 //bytecode// 转化为基于特定机器语言的映射实现。 ===Jack compilation=== * Jack compiler: Jack 语言 -> VM code * VM emulator:VMcode to PC & Hack computer ====VM Abstraction: the Stack====