×
新网 > 虚拟主机 > 正文

汇编器与虚拟机

  • 作者:新网
  • 来源:新网
  • 浏览:100
  • 2018-05-10 13:22:51

上篇文章主要观点是程序实现就是一个翻译过程,最终会翻译成(JIT)CPU指令。我们倒着推,那么GIT的上层就是虚拟机,而虚拟机是针对中间字节码的。中间字节码就是油汇编器对汇编语言文件的一个翻译。

   上篇文章主要观点是程序实现就是一个翻译过程,最终会翻译成(JIT)CPU指令。我们倒着推,那么GIT的上层就是虚拟机,而虚拟机是针对中间字节码的。中间字节码就是油汇编器对汇编语言文件的一个翻译。

Cg-4WlGqHDyIXbC2AAFEbC-WlaEAAJOZQKJsoQAAUSE577.jpg

<div>  那么我们先来谈谈汇编器(虚拟汇编):

  对于汇编器实现中的词法分析肯定是很简单的,语法分析也嗯容易,因为其语法大致有三种:
  1:函数定义
  2:标签定义
  3:定义变量
  3:汇编指令语句
  所以语法分析的结果就是要得到所有的函数定义表,然后每个函数中又有标签表和变量表)
  我们的目的是生成中间字节码,以至于提高速度,那么尽量让每个指令干自己指令内部的事情而不需要关心其他(否则速度就降下来了)。
  这样虚拟机的实现也就更简单。
  因为虚拟机的实现大概只需要一个函数表以及一个运行时堆栈就OK。那么我们的中间字节码中的虚拟指令就应该只针对栈进行操作(而且都是固定了偏移的)
  (想象一下,如果不存在汇编器,而进行纯粹的语言解释器,那么会通过一个map结构去查询某个变量,而先通过汇编器-(可以看成预处理,事实上预处理也就是一个翻译过程)
  去生成中间指令,给每个变量安排一个相对索引,那么查询某变量,只需要一个常量时间-更短的时间即可)
  (正因为预处理-翻译过程,所以才使得下一步过程的执行速度才更快)
  接下来就是代码生成,写入OPcode,然后它具有参数,而参数无非就是一个特定偏移。
  虚拟机去执行这个中间字节码,提供一个堆栈作为运行时。

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading