分享

汇编器与虚拟机

 quasiceo 2014-01-17

汇编器与虚拟机

上篇文章主要观点是程序实现就是一个翻译过程,最终会翻译成(JIT)CPU指令。

我们倒着推,那么GIT的上层就是虚拟机,而虚拟机是针对中间字节码的。中间字节码就是油汇编器对汇编语言文件的一个翻译。

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

对于汇编器实现中的词法分析肯定是很简单的,语法分析也嗯容易,因为其语法大致有三种:

1:函数定义

2:标签定义

3:定义变量

3:汇编指令语句

所以语法分析的结果就是要得到所有的函数定义表,然后每个函数中又有标签表和变量表)

我们的目的是生成中间字节码,以至于提高速度,那么尽量让每个指令干自己指令内部的事情而不需要关心其他(否则速度就降下来了)。

这样虚拟机的实现也就更简单。

 

因为虚拟机的实现大概只需要一个函数表以及一个运行时堆栈就OK。那么我们的中间字节码中的虚拟指令就应该只针对栈进行操作(而且都是固定了偏移的)

(想象一下,如果不存在汇编器,而进行纯粹的语言解释器,那么会通过一个map结构去查询某个变量,而先通过汇编器-(可以看成预处理,事实上预处理也就是一个翻译过程)

去生成中间指令,给每个变量安排一个相对索引,那么查询某变量,只需要一个常量时间-更短的时间即可)

(正因为预处理-翻译过程,所以才使得下一步过程的执行速度才更快)

 

接下来就是代码生成,写入OPcode,然后它具有参数,而参数无非就是一个特定偏移。

虚拟机去执行这个中间字节码,提供一个堆栈作为运行时。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多