我听说过类似“C运行时”,“Visual c++ 2008运行时”,“。NET公共语言运行时”等。

什么是“运行时”? 它是用什么做的? 它如何与我的代码交互?或者更准确地说,我的代码是如何被它控制的?

在Linux上编写汇编语言时,我可以使用INT指令进行系统调用。那么,运行时只是一堆将低级函数包装成更抽象和高级函数的预制函数吗?但这看起来更像是库的定义,而不是运行时的定义吗?

“运行时”和“运行时库”是两个不同的东西吗?

加1

这些天,我在想也许运行时与所谓的虚拟机(如JVM)有一些共同之处。下面这句话引出了这样的想法:

这个编译过程非常复杂,很难分解 有几个抽象层,这些抽象层通常包括三个 翻译器:编译器、虚拟机实现和 汇编程序。——《计算系统的要素》(导论, 通往硬件领域的道路)

加上2

《专家C编程:深层C语言秘密》一书。第6章运行时数据结构是对这个问题的有用参考。

加3 - 2021年2月28日上午7:31

以下是我对处理器设计有所了解后的一些看法。整个计算机就是多个层次的抽象。它从基本的晶体管一直到运行的程序。对于任何抽象级别N,它的运行时间是直接的抽象级别N-1,在它下面。是上帝给了我们抽象的0级。


当前回答

运行时或执行环境是语言实现的一部分,它在运行时执行代码;实现的编译时部分在C标准中称为翻译环境。

例子:

Java运行时由虚拟机和标准库组成 一个普通的C运行时由加载器(它是操作系统的一部分)和运行时库组成,运行时库实现了C语言中没有被编译器内置到可执行文件中的部分;在托管环境中,这包括标准库的大部分

其他回答

运行时基本上是指程序与机器的硬件和操作系统交互的时间。C语言没有自己的运行时,相反,它从操作系统(基本上是ram的一部分)请求运行时来执行自己。

运行时可以表示程序生命的当前阶段(运行时/编译时间/加载时间/链接时间) 或者它可能意味着一个运行时库,它形成了与执行环境交互的基本低级操作。 或者它可能意味着运行时系统,这与执行环境相同。

在C程序中,运行时是建立堆栈、堆等的代码,这是C环境所期望的要求。它基本上建立了语言所承诺的环境。(它可以有一个运行时库组件crt0。lib或类似的C)

如果我阅读上述答案的理解是正确的,运行时基本上是“后台进程”,如垃圾收集,内存分配,基本上任何间接调用的进程,由你的代码编写的库/框架,特别是那些编译后发生的进程,而应用程序正在运行。

在我的理解中,运行时就是它的确切含义——程序运行的时间。你可以说某些事情发生在运行时/运行时或编译时。

我认为运行时和运行时库应该是(如果不是的话)两个独立的东西。“C运行时”对我来说似乎不正确。我称之为“C运行时库”。

你其他问题的答案: 我认为“运行时”这个术语可以扩展到包括程序运行时的环境和上下文,因此:

它由程序运行期间所有可以称为“环境”的东西组成,例如其他进程、操作系统和已使用库的状态、其他进程的状态等 在一般意义上,它不与你的代码交互,它只是定义你的代码在什么情况下工作,在执行过程中什么是可用的。

这个答案在某种程度上只是我的观点,而不是事实或定义。

运行时或执行环境是语言实现的一部分,它在运行时执行代码;实现的编译时部分在C标准中称为翻译环境。

例子:

Java运行时由虚拟机和标准库组成 一个普通的C运行时由加载器(它是操作系统的一部分)和运行时库组成,运行时库实现了C语言中没有被编译器内置到可执行文件中的部分;在托管环境中,这包括标准库的大部分