首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java虚拟机与CLR?

Java虚拟机与CLR?
EN

Stack Overflow用户
提问于 2018-02-24 00:54:13
回答 2查看 0关注 0票数 0

Java虚拟机的工作方式与.NET框架公共语言运行时(CLR)工作吗?

还有,是.NET框架CLR是一个“虚拟机”,还是它没有虚拟机的属性?

EN

回答 2

Stack Overflow用户

发布于 2018-02-24 08:56:55

这两种实现有很多相似之处(在我看来:是的,它们都是“虚拟机”)。

首先,它们都是基于堆栈的VM,没有“寄存器”的概念,就像我们习惯于在像x86或PowerPC这样的现代CPU中看到的那样。所有表达式((1+1)/2)的计算是通过将操作数推入“堆栈”,然后在指令(Add、Divide等)需要消耗这些操作数时将这些操作数从堆栈中弹出。每个指令将其结果推回堆栈。

这是实现虚拟机的一种方便的方法,因为世界上几乎每个CPU都有一个堆栈,但是寄存器的数量通常是不同的(而且有些寄存器是特殊用途的,每条指令都希望在不同的寄存器中使用操作数,等等)。

所以,如果你要对一个抽象机器建模,一个纯粹基于堆栈的模型是一个很好的方法。

当然,真正的机器不是那样运作的。因此,JIT编译器负责执行字节码操作的“注册”,实质上是将实际的CPU寄存器调度为尽可能包含操作数和结果。

因此,我认为这是CLR和JVM之间最大的共同点之一。

票数 0
EN

Stack Overflow用户

发布于 2018-02-24 10:17:41

一个重要的区别是CLR被设计成一个与语言无关的体系结构,这与JVM不同。

另一个重要的区别是CLR是专门为允许与本机代码的高度互操作性而设计的。这意味着当本机内存被访问和修改时,clr必须管理可靠性和安全性,而且管理编组基于CLR的数据结构和本机数据结构之间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档