gpt4 book ai didi

c# - 使用 ngen.exe 编译内核

转载 作者:行者123 更新时间:2023-11-30 15:07:12 26 4
gpt4 key购买 nike

我知道 Cosmos 和 SharpOS 已经制作了自己的编译器来从 C# 构建二进制代码,但是您可以使用 Microsoft 的 .NET AOT 来做同样的事情吗?将 C# 编译为 x86,即。我假设您将不得不省略 using 语句,就像涉及 include 语句的操作系统开发一样。任何反馈表示赞赏。谢谢

编辑:我想在内核开发中使用 C# 的主要原因是托管代码带来的内存管理,尤其是单一地址空间属性。是否需要启动 JIT 编译器,然后编译 C#?还是当时的环境仍然太残废了?感谢反馈

最佳答案

简短回答:不,使用 ngen.exe/AOT编译器不足以编译内核。

长答案:ngen.exe/AOT 编译器切断了 JIT 编译器的工作,但 CLR 不仅仅是一个 JIT 编译器——即使不引用任何其他程序集,它也提供内存管理、垃圾处理等功能收集、类型检查和异常处理(以及除此之外的一大堆其他事情)。

是的,使用 ngen 确实让你更接近于在 C# 中生成内核,但它并没有让你更接近 - 你仍然有一大堆其他问题需要解决,这些问题通过编写更容易解决针对您的预期环境(而不是 CLR)的编译器。

更新:如果您想要 C# 的“托管”部分,那么您需要为自己创建一个托管环境来运行您的代码,即垃圾收集器等...(或尝试获取一个存在于像 CLR 一样的工作中,这可能会更困难)。即使有底层操作系统的支持,这也是一项非常艰巨的任务,当您是操作系统时就更是如此(尽管绝不是不可能的 - 毕竟这是正是像 Singularity 和 Cosmos 这样的项目所做的。

关于c# - 使用 ngen.exe 编译内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com