基于栈的虚拟机和基于寄存器的虚拟机区别

本文介绍了虚拟机的基本概念和功能,包括指令、操作数、调用栈和指令指针等。主要讨论了基于栈的虚拟机(如JVM)和基于寄存器的虚拟机(如Dalvik VM)的区别,重点在于操作数的存储和检索机制。栈式虚拟机以频繁的push和pop操作为特征,而寄存器式虚拟机则直接使用寄存器进行计算,指令执行更快且支持更多优化,但指令长度通常更长。
摘要由CSDN通过智能技术生成

前言

虚拟机是计算机编程领域的常见概念。在去年入职Shopee之前,我的整个职业生涯都是构建在虚拟机之上的,所以很有必要研究一下虚拟机,特别是虚拟机的分类:

  • 基于栈的虚拟机,比如JVM虚拟机
  • 基于寄存器的虚拟机,比如Dalvik虚拟机
虚拟机的概念

首先问一个基本的问题,作为一个虚拟机,它最基本的要实现哪些功能?

他应该能够模拟物理CPU对操作数的移进移出,理想状态下,它应该包含如下概念:
  • (1)将源码编译成VM指定的字节码。
  • (2)包含指令和操作数的数据结构(指令用于处理操作数作何种运算)。
  • (3)一个为所有函数操作的调用栈。
  • (4)一个“指令指针(Instruction Point —IP)”:用于指向下一条将要执行的指令。
  • (5)一个虚拟的“CPU”–指令的派发者:
    • 1)取指:获取下一条指令(通过IP获取)
    • 2)译码:对指令进行翻译,将要作何种操作。
    • 3)执行:执行指令。

以上是CPU的三级流水线操作,实际上五级流水线还包括回写,即把执行后生成的结果回写进存储器。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值