垃圾收集器是如何包含在编译器的最终产品中的?

问题描述 投票:0回答:1

问题主要是关于垃圾收集器如何包含在用编程语言编写的程序中。让我们以一种使用 LLVM 的语言为例,开发人员是否只需编写一个包含垃圾收集器所有接口的静态库,并将其与编译器生成的每个二进制文件链接起来。当然,这意味着如果他们想分配到堆,将使用库的函数。

这只是我进行的思考过程之一,但如果有人知道答案,如果那个人愿意与像我这样的人分享这些信息,我将非常感激。

garbage-collection compiler-construction llvm static-libraries
1个回答
2
投票

所有语言,也许除了汇编语言,都包含称为“运行时”或“编译器运行时”的东西。例如,C++ 的函数包含一个函数,该函数调用静态对象的构造函数,然后调用 main(),然后调用其构造的析构函数,最后退出。我认为它还有更多作用,但这就是要点。

大多数语言在语言规范中的某个地方定义了运行时的内容,这些定义通常包括一些低级支持和帮助程序。有时不止一点,而且不仅仅是低级帮手。无论如何,如果该语言使用垃圾收集,那么收集器就被定义为运行时的一部分。

诸如 clang 之类的提前编译器通常会使用一个或多个库或目标文件将运行时链接到最终程序。也就是说,最终的可执行文件是通过将您指定的文件和语言指定的文件链接在一起而生成的。

© www.soinside.com 2019 - 2024. All rights reserved.