.NET VM 是编译器还是解释器?

问题描述 投票:0回答:2

.NET 的虚拟机是编译 CIL 字节码(然后在最底层 - CPU 汇编程序)执行代码,还是解释器(读取以下指令并执行它们)?

.net clr cil vm-implementation
2个回答
7
投票

.NET 的虚拟机吗 编译 CIL 字节码(然后 在最低级别执行代码 - CPU 汇编器)

是的,它是 CLR 的一个组件,称为 JIT(即时编译),它将中间语言代码(由编程语言的编译器发出)转换为机器代码。

没有像 Ruby、PHP、Python 等动态语言那样的解释器。


更新:

正如 @Nick Craver 的评论中所指出的,因为 .Net 4 中添加 DLR 带来了在 CLR 中使用动态语言概念的可能性。


0
投票

.NET VM 是编译器还是解释器?

.Net生态系统中没有像Java生态系统那样的VM,但是哪个.Net? .Net SDK、.Net Runtime 或 .Net Framework

.Net Framework组件:

  • 公共语言运行时(CLR)
  • FCL(框架类库)
  • 通用类型系统(CTS)
  • 通用语言规范(CLS)
  • 垃圾收集器
  • 即时编译器(JIT)
  • 语言编译器
  • 图书馆

而且你在这里看不到任何虚拟机...

.Net 运行时组件:

  • 通用类型系统(CTS)
  • 垃圾收集器
  • 即时编译器(JIT)
  • 通用语言规范(CLS)
  • 组件

这里仍然看不到任何虚拟机...

.Net 运行时包含即时 (JIT) 编译器,而 .Net SDK 包含 JIT 和 IL 编译器。
所以它们不是虚拟机,同时都是CONTAIN编译器。

所以在我看来,你可以说 IL + CLR + JIT 一起可能是一个虚拟机。

.NET VM 是编译器还是解释器?

都不是。

© www.soinside.com 2019 - 2024. All rights reserved.