在没有运行OS的裸硬件上运行CLR JIT的输出

时间:2015-04-15 08:22:04

标签: .net clr jit cil

是否可以在没有OS的裸硬件上运行CLR的JIT或AOT(Ahead-Of-Time)编译器的输出(因为它被称为本机代码或本机指令集)?什么时候.NET框架库代码链接?

没有操作系统的意思是没有Win32 API调用的帮助。

1 个答案:

答案 0 :(得分:2)

如果你删除Win32,那么你需要用其他东西替换它为CLR做的事情(比如内存分配,控制台,文件系统和网络访问),否则它们将无法工作。

在这方面,.Net和C之间的唯一区别可能就是你可以编写一个不需要任何这个的有用的C程序。另一方面,CLR只是假设存在内存分配和文件系统访问等功能,即使是最简单的C#程序也会使用它们。

所以,不,我不相信你可以运行一个正常的CLR程序,至少没有一个基本的操作系统。

另一方面,如果你没有绑定正常的CLR,那么使用AOT编译器运行IL所需的支持非CLR代码并不多,如Singularity所示。


关于术语,术语“本机代码”表示它是使用CPU指令集直接在CPU上运行的代码。这并不意味着它的代码不包含任何OS调用。