是D语言完全取决于D运行时



最近,我一直在研究D语言。我一直对运行时感到困惑。

从我可以收集的信息中,我知道这是一个有助于d d的功能的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是,由于D汇编为机器代码,如果我们的程序不需要,它是否真的需要诸如垃圾收集之类的功能?

真正令我感到困惑的是:

"您可以在D中编写操作系统。"

我知道您无法真正这样做,因为操作系统的功能要比任何汇编的语言都能提供的不使用某些组件所能提供的。但是,如果您有一个称为D代码的内核,D运行时会阻止D在这样的简直环境中运行吗?还是D运行时比这简单?它可以被认为只是"自动"包含sourcefile/libraries的"自动",即用您的应用程序编译时,没有比自己编写该编码的更有不同了吗?

也许我只是在看不错。但是我敢肯定,有关该主题的一些信息可能会对很多人有好处。

是的。

如果您只是在没有运行时构建代码,则编译器会在缺少其期望通过运行时实现的符号时会发出错误。然后,您可以去看看Druntime如何实现它以查看它的作用,然后以您喜欢的任何方式实现它。这就是XOMB(语言版本1,但相同的交易)编写的Xomb:http://xomb.net/index.php?title=main_page

许多应用程序实际上并没有使用很多Druntime,但这是将D的运行时组件包括在应用程序中的最方便的方法,因此这就是为什么它可以作为静态库完成(希望将来是共享的库)。

它与我期望的C 几乎相同。该语言自己的语言将本机代码编译为本地代码。但是,总是需要一些代码来设置所有程序以运行您的程序,例如处理命令行参数。

通过调用一些标准代码,而不是在所使用的任何地方生成代码,可以更好地实现一些更复杂的语言设施。例如,抛出异常需要找到相关的处理程序功能。毫无疑问,编译器可以在所使用的任何地方插入代码以进行操作,但是在库中写代码并将其称为更明智得多。另外,标准库中有许多预先撰写的库功能。

所有这些都是运行时。

如果编写C,可以使用它来编写操作系统,因为您可以自己编写启动代码,可以编写所有代码以递给内存分配,可以为标准功能编写所有代码,例如strcat自己在运行时使用所提供的。但是您不想为任何申请程序做到这一点。

最新更新