为什么在编写编译器时需要运行时库?

Why do we need runtime library when writing a compiler?

我正在学习编译器教程。现在我正在尝试实现 Vector(或数组)。作者提供了一个 C 文件,包括打印整数、初始化数组 (malloc) 等函数,并要求我在编译器生成的 x86 代码中调用这些函数。

我的问题是:我们为什么需要它?我们不能使用 x86 系统调用或中断吗?

是不是因为使用了运行时库,让写编译器更容易?但最终的可执行文件将 slower?

您不能使用系统调用或中断,除非系统中有可调用的东西,并且操作系统通常不包含向量库。您可以自己生成所有代码,但是您必须在使用该功能的每个目标文件中都这样做,这会很浪费。因此,您提供了一个运行时库,其中包含您希望目标程序调用和安排的内容,以便 linker 将搜索它。这是 link 时间成本,而不是运行时成本。