首页域名资讯 正文

汇编器与虚拟机

2025-04-01 1 0条评论

汇编器与虚拟机

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

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

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

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

文章版权及转载声明

本文作者:亿网 网址:https://edns.com/ask/post/181144.html 发布于 2025-04-01
文章转载或复制请以超链接形式并注明出处。