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

Run CLR JIT's output on bare hardware without OS running

是否可以在没有 OS? .NET Framework 库代码在什么时候链接?

我所说的没有 OS 的意思是没有 Win32 API 调用的帮助。

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

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

所以,不,我不相信你可以 运行 一个普通的 CLR 程序,至少没有基本的 OS。

另一方面,如果您不依赖于普通的 CLR,那么 运行 使用 AOT 编译器的 IL 所需的支持非 CLR 代码并不多,如 Singularity.


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