掌握目标语言的使用、编写 是非常重要的!!!

如果你要实现的Jack语言编译器是把Jack语言代码编译成虚拟机VM代码、或者直接成汇编代码,要完成源代码中unit A——> 目标语言代码转写此unit A  这个工作,缺少对目标语言代码的掌握是不行的。

所以:汇编作为最普遍的目标代码,是早晚都需要学会的。



贴几张书中截图,展示一下在vm层面,是如何实现诸如求积函数、数组元素赋值、对象实例赋值这样的高级语言代码典型unit的

首先这是vm的函数执行内存模型、基本的pop/push指令

1. 一个求积函数

2. 数组元素赋值: int bar[10];  bar[2]=19;

3. 实例对象的成员变量赋值

最新文章

  1. [后端人员耍前端系列]KnockoutJs篇:使用WebApi+Bootstrap+KnockoutJs打造单页面程序
  2. 《机器学习实战》学习笔记——第14章 利用SVD简化数据
  3. [BTS] Faulting application name: BTSNTSvc.exe, version: 3.9.469.0, time stamp: 0x4c547e09
  4. Andriod调用http请求
  5. 用gameMaker做个小游戏
  6. poj 1459 Power Network
  7. Java中的自动拆箱装箱(Autoboxing&Unboxing)
  8. To the end
  9. WebGL 创建和初始化着色器过程
  10. 《深入实践Spring Boot》阅读笔记之二:分布式应用开发
  11. 从Perforce到Git的迁移
  12. python format() 函数
  13. Luogu P2312 解方程
  14. ZOJ 4027 Sequence Swapping(DP)题解
  15. Fluent UDF【3】:环境配置
  16. Oralce分析函数
  17. 20145230熊佳炜《网络对抗》实验五:MSF基础应用
  18. 「BZOJ 3218」 a + b Problem
  19. 构建vue零散笔记
  20. 利用位操作进行IP地址的转化

热门文章

  1. Fluter基础巩固之Dart语言详解<二>
  2. python相关资源
  3. python基础语法19 面向对象总结,pickle保存对象注意事项
  4. C语言常用库函数实现
  5. 7.Go退出向Consuk反注册服务,优雅关闭服务
  6. WindowChrome
  7. 学习-jdk8 特性
  8. 为什么要使用 Go 语言?Go 语言的优势在哪里?
  9. Docker ubuntn 使用apt-get update报错
  10. Spring Boot 《一》开发一个“HelloWorld”的 web 应用