虚拟机VM ( c++ 版本)1
今天通过学习来尝试自己去写一个虚拟机,我们一切先从简单开始。做事总是需要找一个原因,也就是为什么做这个件事,做这件事的意义,发明蒸汽机为了人类从繁重的劳动中解放出来更多思考,发明计算机为了辅助人类从重复计算和繁重计算中解放出来去享受生活吗? 结果带来负效应 996。
CLR常用简写词语,CLR是公共语言运行库(Common Language Runtime)和Java 虚拟机一样也是一个运行时环境,它负责资源管理(内存管理和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。
VM 的基本结构
虚拟机实际上对物理计算机进行抽象和虚拟化,所以要写一个虚拟机,首先需要对计算机内部简单结构进行了解。我们开发应该是理论先行。
- 栈
- 还要一个主要方法
- 内存数据内存(data memory)指令内存(code memory)
这两个部分都是用于存储数据和源码内存
字节码相比于机器码是更高级以及更有有规律可寻
字节码作为工作的最小单元
- fetch : fetch 不断循环地执行读取 data memory 和 code memory 获取源码
- decode : 负责将字节码进行解码为指令供 execute 执行
- 寄存器(registers)中保存了 sp 栈指针、fp 栈帧指针和 ip 程序指针
通过 ip 指针的自增一行一行读取字节码然后由 decode 将字节码翻译成指令来执行 - 栈虚拟机操作数栈持有操作数操作数可以入栈或出栈进行操作栈的大小是由每一个方法显式确定的
public class HelloWor