.net 运行CLR JIT';在没有运行操作系统的情况下,在裸硬件上输出

.net 运行CLR JIT';在没有运行操作系统的情况下,在裸硬件上输出,.net,clr,jit,cil,.net,Clr,Jit,Cil,是否可以在没有操作系统的裸硬件上运行CLR的JIT或AOT(提前)编译器的输出(因为它被称为本机代码或本机指令集)?NET framework库代码链接到什么位置 我所说的没有操作系统就是没有Win32 API调用的帮助 如果删除Win32,则需要将它为CLR所做的事情(如内存分配、控制台、文件系统和网络访问)替换为其他内容,否则它们将无法工作 在这方面,.Net和C之间的唯一区别可能是,您可以编写一个有用的C程序,而不需要这些。另一方面,CLR只是假设内存分配和文件系统访问等功能存在,甚至最简

是否可以在没有操作系统的裸硬件上运行CLR的JIT或AOT(提前)编译器的输出(因为它被称为本机代码或本机指令集)?NET framework库代码链接到什么位置


我所说的没有操作系统就是没有Win32 API调用的帮助

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

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

所以,不,我不相信你能在没有基本操作系统的情况下运行一个普通的CLR程序

另一方面,如果您没有绑定到普通CLR,那么使用AOT编译器运行IL所需的支持非CLR代码就不多,如所示



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

那么.NET framework IL与源IL链接,而JITer或AOT编译源IL并生成本机代码?对吧?尼基非常喜欢。尽管在JIT的情况下,调用某个方法的本机代码最初并不包含该方法的地址。相反,它包含JIT编译并执行该方法的代码地址。